查找两个法线向量之间的 x,y,z 旋转
本文关键字:之间 旋转 向量 两个 查找 | 更新日期: 2023-09-27 18:34:54
我在3D空间中有两个正方形。我想找到它们之间的 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]));
我想找到欧拉旋转,它将使法线1朝向与法线相同的方向2
首先,您可以计算轴和旋转量(假设是任意轴(:
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));
然后你可以从这里用函数将其转换为欧拉角