鉴于以下内容:
- 起点(坐标)
- 角度(度)
- 速度
..我想计算给定的轨迹 例如,对于下面的图像,速度为1:(10,10)(9,9)(8,8)(7,7)..
它应该能够向各个方向移动 我怎么计算呢?
答案 0 :(得分:5)
如果你有角度和速度(标量),x方向和y方向的分量很容易:
vx = (speed)*cos(angle)
vy = (speed)*sin(angle)
对于大多数语言,角度需要以弧度为单位,而不是度数。确保你转换它。
因此,如果你在时间t1有一个点(ux,uy),那么时间t2的位置是:
ux(t2) = ux(t1) + vx*(t2-t1)
uy(t2) = uy(t1) + vy*(t2-t1)
让我们看看它在Java中的样子:
/**
* Method for updating a position giving speed, angle, and time step
* @param original coordinates in x, y plane
* @param speed magnitude; units have to be consistent with coordinates and time
* @param angle in radians
* @param dtime increment in time
* @return new coordinate in x, y plane
*/
public Point2D.Double updatePosition(Point2D.Double original, double speed, double angle, double dtime) {
Point2D.Double updated = new Point2D.Double();
updated.x = original.x + speed*Math.cos(angle)*dtime;
updated.y = original.y + speed*Math.sin(angle)*dtime;
return updated;
}