2012-05-22 124 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

相关问题