假定下列:
- 起始点(坐标)
- 角(度)
- 速度计算轨迹给出的坐标和角度
..我想计算给定的轨迹。
例如对于下面的图像w /速度1:(10,10)(9,9)(8,8)(7,7)..
它应该能够向各个方向移动。
我该如何计算它?
假定下列:
- 起始点(坐标)
- 角(度)
- 速度计算轨迹给出的坐标和角度
..我想计算给定的轨迹。
例如对于下面的图像w /速度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;
}
在我生活的2D和3D世界,速度矢量只有2或3个分量。你发布的是什么“速度”?这是一个高中触发问题,如果你正确地提出。 – duffymo 2012-03-21 12:30:11
这是一个** 2D世界**,**速度基本上是**速度**。 – David 2012-03-21 12:31:43
是的,我明白了。 (不需要“基本上”。)我说速度矢量应该有两个数字,而不是更多。 – duffymo 2012-03-21 12:33:34