用JS编写一个动态的平抛运动轨迹曲线.
时间: 2023-09-17 13:11:21 浏览: 139
好的,以下是一个用JS编写的动态平抛运动轨迹曲线的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>动态平抛运动轨迹曲线</title>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
// 获取画布元素
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 设置画布宽高
canvas.width = 600;
canvas.height = 400;
// 定义常量
const g = 9.8; // 重力加速度
const dt = 0.05; // 时间间隔
const scale = 30; // 像素比例尺
// 定义变量
var v0 = 50; // 初始速度
var theta = 45 * Math.PI / 180; // 初始角度
var x0 = 0; // 初始位置
var y0 = canvas.height; // 地面位置
var t = 0; // 时间
var x = x0; // 当前位置
var y = y0; // 当前位置
// 绘制坐标轴
ctx.beginPath();
ctx.moveTo(0, y0);
ctx.lineTo(canvas.width, y0);
ctx.moveTo(0, 0);
ctx.lineTo(0, canvas.height);
ctx.stroke();
// 绘制起点
ctx.beginPath();
ctx.arc(x0, y0, 5, 0, 2 * Math.PI);
ctx.fill();
// 绘制轨迹
ctx.beginPath();
ctx.moveTo(x, y);
while (y >= y0) {
t += dt;
x = x0 + v0 * Math.cos(theta) * t;
y = y0 - v0 * Math.sin(theta) * t + 0.5 * g * t * t;
ctx.lineTo(x * scale, y * scale);
ctx.stroke();
}
</script>
</body>
</html>
```
这段代码会在网页中绘制一个画布,并在画布中绘制一个动态的平抛运动轨迹曲线。其中,`const g` 表示重力加速度,`const dt` 表示时间间隔,`const scale` 表示像素比例尺,`var v0` 表示初始速度,`var theta` 表示初始角度,`var x0` 和 `var y0` 表示初始位置,`var t` 表示时间,`var x` 和 `var y` 表示当前位置。代码中使用了 `Math` 对象中的 `cos()`、`sin()` 和 `PI` 属性,分别表示余弦函数、正弦函数和圆周率。代码中通过 `while` 循环,不断更新当前位置,直到物体落到地面为止。在每次更新位置时,都会绘制一条从上一个位置到当前位置的线段,以形成轨迹曲线。
阅读全文