给定坐标和角度计算轨迹

Dav*_*vid 0 math geometry angle

给出以下内容:
- 起点(坐标)
- 角度(度)
- 速度

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

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

例

duf*_*ymo 5

如果您有角度和速度(标量),则x和y方向的组件很容易:

vx = (speed)*cos(angle)

vy = (speed)*sin(angle)
Run Code Online (Sandbox Code Playgroud)

对于大多数语言,角度需要以弧度为单位,而不是度数.确保你转换它.

所以如果你在时间t1有一个点(ux,uy),那么时间t2的位置是:

ux(t2) = ux(t1) + vx*(t2-t1)

uy(t2) = uy(t1) + vy*(t2-t1)
Run Code Online (Sandbox Code Playgroud)

让我们看看它在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;
}
Run Code Online (Sandbox Code Playgroud)