我在 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]));
我想找到使 normal1 朝向与 normal2 相同的方向的欧拉旋转
最佳答案
首先,您可以计算轴和旋转量(假设是任意轴):
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 中的函数将其转换为欧拉角
关于c# - 找到两个法向量之间的 x,y,z 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706708/