给定坐标和角度计算轨迹

时间:2012-03-21 12:22:52

标签: math geometry angle

鉴于以下内容:
- 起点(坐标)
- 角度(度)
- 速度

..我想计算给定的轨迹 例如,对于下面的图像,速度为1:(10,10)(9,9)(8,8)(7,7)..

它应该能够向各个方向移动 我怎么计算呢?

example

1 个答案:

答案 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;
}