2013-04-03 114 views
0

用於根據移動物體的速度或矢量方向來確定移動物體的旋轉角度的公式是什麼?例如,如果飛機正在從位置(x0,y0)=(0,0)向位置(x1,y1)=(200,100)移動,飛機將面對哪個角度?從運動物體的速度x,y獲得旋轉角度?

+0

看看[這個例子](http://stackoverflow.com/questions/14886232/swing-animation-running-extremely-slow/14902184#14902184)。它基本上是計算物體爲了遵循給定路徑而必須具有的方向。 – MadProgrammer

+0

速度是速度增加或減少的速度,它並不是說物體所採用的曲線。例如,飛機可以直線前進,因此角度將爲0,但是飛機可能會以寬闊的曲線走向,使角度變爲90 ... – JScoobyCed

+0

取決於「旋轉角度」的含義。如果你指的是沿着x軸從(0,0)發出的光線與從(0,0)發出並穿過(200,100)的光線所形成的角度,那麼簡單的三角可以告訴你。如果你的意思是別的,恐怕在你的問題可以回答之前你需要說出那是什麼。 – dlev

回答

2

得到兩分之間的角度,您插入點到這個代碼:

var _radians:Number = Math.atan2(y2-y1, x2-x1); 

「_radians」是弧度的角度。

要旋轉DisplayObject,可以在將角度轉換爲度數後使用其旋轉屬性。

var _degrees:Number = _radians * (180/Math.PI); 
_displayObject.rotation = _degrees; 

您可能需要在旋轉中添加一個內容以與您的作品保持一致。

+0

是的,這正是我正在尋找的公式。謝謝你的答案。 – Elonoa

3

通過旋轉角度,你顯然意味着方位角。功能Math.atan2(dy, dx)是正確的方法。在你的p1 = (x1, y1) = (200,100)p0 = (x0, y0) = (0,0)的例子中,你需要Math.atan2(y1 - y0, x1 - x0)。這將以弧度返回角度。轉換爲度數,乘以180/Math.PI

+1

+1。假設你在問題標籤中使用Flash,需要記住的一點是'Math.atan2'返回一個相對於負x的角度,但'DisplayObject.rotation'相對於負y。 –