2012-03-21 93 views
0

假定下列:
- 起始点(坐标)
- 角(度)
- 速度计算轨迹给出的坐标和角度

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

它应该能够向各个方向移动。
我该如何计算它?

example

+1

在我生活的2D和3D世界,速度矢量只有2或3个分量。你发布的是什么“速度”?这是一个高中触发问题,如果你正确地提出。 – duffymo 2012-03-21 12:30:11

+0

这是一个** 2D世界**,**速度基本上是**速度**。 – David 2012-03-21 12:31:43

+0

是的,我明白了。 (不需要“基本上”。)我说速度矢量应该有两个数字,而不是更多。 – duffymo 2012-03-21 12:33:34

回答

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; 
} 
+0

请问您可以使用C#或Java语法吗? 我不太关注。 – David 2012-03-21 14:20:34

+0

你是怎么知道方程的? – 2012-08-10 22:34:53

+0

标准二维矢量数学,微积分的普通微分和有限差分。 – duffymo 2012-08-10 23:22:29