2013-06-27 116 views
0

計算3D點繞另一個3D點旋轉一定弧度/度後的位置的公式是什麼?我正在使用Java/LWLJGL。使一組3D點圍繞一個點旋轉

難道有人只是在以下填空白?
public Vector3f rotate(Vector3f origin, Vector3f rotation)
{
Vector3f ret = new Vector3f();
ret.x = __________;
ret.y = __________;
ret.z = __________;
}

+0

旋轉的點產品需要兩個角度,而不是交換。在我們回答之前,你能確認你有兩個參數可用嗎? – hexafraction

+0

@hexafraction - 那麼,我將有3個旋轉參數 - x,y和z旋轉(以及要旋轉的點) – functorial

+0

沒有x,y和z旋轉之類的東西。只涉及兩個角度,就像在二維中只涉及一個角度。爲了非正式地證明這一點,在2D中採取一點,並嘗試以兩種不同的*獨立*方式旋轉它。 – hexafraction

回答

1

考慮您的固定點具有座標(A,B,C),並在時間和t1在移動物體(X1,Y1,Z1)(X2,Y2,Z2)在時間t2

選項1 您可以考慮投影x-y平面和y-z平面上的投影並計算該2D空間中的角度。

選項2 你可以考慮兩個向量。說向量AB

A=(x1-a)i+(y1-b)j+(z1-c)k 
B=(x2-a)i+(y2-b)j+(z2-c)k 

現在使用的3D AB

A . B = |A||B|cos(angle) 
+0

我現在很困惑。什麼是t1,t2,A和B?難道你不能只寫一個方法:'公共Vector3f旋轉(Vector3f起源,Vector3f旋轉){浮動x = ...浮動y = ...浮動z = ...}' – functorial

+0

@ user2529202旋轉只有兩個角度。這篇文章中的數學是正確的,現在你可以在這裏構造一個使用數學的方法。 – hexafraction

+0

@ user2529202你不需要擔心t1和t2。我用它們來解釋。你只想知道三個點(旋轉點的固定點和兩個位置)。你可以從這些中找到A和B.我建議你學習vectors.refer這個http://www.mathsisfun.com/algebra/vectors.html。如果有什麼不清楚的地方,請在這裏留言。 –