Math 计算给定坐标和角度的轨迹

Math 计算给定坐标和角度的轨迹,math,geometry,angle,Math,Geometry,Angle,考虑到以下情况: -起点(坐标) -角度(度) -速度 。。我想计算给定的轨迹。 例如,对于速度为1的下方图像:(10,10)(9,9)(8,8)(7,7) 它应该能够向各个方向移动。 我怎么计算呢 如果有角度和速度(标量),则x和y方向上的组件很容易: vx = (speed)*cos(angle) vy = (speed)*sin(angle) 对于大多数语言,角度需要以弧度为单位,而不是度。一定要转换它 因此,如果在时间t1有一个点(ux,uy),那么时间t2的位置是: ux(t2)

考虑到以下情况:
-起点(坐标)
-角度(度)
-速度

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

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


如果有角度和速度(标量),则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;
}

如果有角度和速度(标量),则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;
}

在我生活的2D和3D世界中,速度向量只有2或3个分量。你贴的“速度”是多少?如果你能正确地摆出姿势,这是一个高中的三角问题。这是一个2D世界,速度基本上就是它的速度。是的,我明白了。(不需要“基本上”。)我是说速度向量应该有两个数字,不要更多。在我生活的2D和3D世界中,速度向量只有2或3个分量。你贴的“速度”是多少?如果你能正确地摆出姿势,这是一个高中的三角问题。这是一个2D世界,速度基本上就是它的速度。是的,我明白了。(不需要“基本上”。)我是说速度向量应该有两个数字,不能再多了。你能用C#或Java语法表达吗?我不太明白。你们是怎么得出这些方程的?标准的二维向量数学,微积分的普通导数,和有限差分。我明白了,我想我明白了,你们能用C#或Java语法表达吗?我不太明白。你们是怎么得出方程的?标准二维向量数学,微积分的普通导数,和有限差分。我明白了,我想我明白了,