2012-05-22 62 views
3

我在3D空間中有兩個正方形。我想找到它們之間的x,y,z角度。我開始尋找兩個正方形的法向量,並試圖弄清楚如何獲得它們之間的角度。查找兩個法線向量之間的x,y,z旋轉

我使用XNA(C#)Vector3對象。

我計算了法向量如下:

 Vector3 normal1 = (Vector3.Cross(sq1.corners[0] - sq1.corners[1], sq1.corners[0] - sq1.corners[2])); 
     Vector3 normal2 = (Vector3.Cross(sq2.corners[0] - sq2.corners[1], sq2.corners[0] - sq2.corners[2])); 

我想找到的Euler旋轉,將得到正常1爲正常2

+4

函數變換這歐拉角這是一個數學或編程的問題? –

回答

7

首先面臨同樣的方法,就可以計算出軸和數量旋轉的(假設的任意軸):

Vector3 axis = Vector3.Cross(normal1, normal2); 
axis.Normalize(); 
double angle = Math.Acos(Vector3.Dot(normal1, normal2)/normal1.Length()/normal2.Length()); 

如果法線被歸一化,則角度的計算簡化爲

double angle = Math.Acos(Vector3.Dot(normal1, normal2)); 

然後你可以從here

相關問題