2012-03-21 96 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