答案 0 :(得分:0)
选择一个不在(0,0,0)的点。围绕y轴旋转形状,直到该点的z值为0.
选择剩下的点。围绕X轴旋转形状,直到该点的z值为0.
答案 1 :(得分:0)
给定P1
,P2
,P3
三角形的点。
让我们注意:
a = P2 - P1
b = P3 - P1
n = Vector3.CrossProduct(a, b).Normalized()
- > n
是三角形的法线三角形位于Z = 0
平面中n.z = 0
然后,只需使用:
d = Vector3.CrossProduct(n, z).Normalized()
- >它是你的旋转轴angle = (float)System.Math.Acos(Vector3.DotProduct(n, z))
- >它是你的旋转角度代码是:
Vector3 a = P2 - P1;
Vector3 b = P3 - P1;
Vector3 n = Vector3.Cross(a, b);
n.Normalize();
Vector3 d = Vector3.Cross(n, Vector3.UnitZ);
d.Normalize();
float angle = (float)System.Math.Acos(Vector3.Dot(n, Vector3.UnitZ));
Vector3 newpoint2 = P1 + Vector3.Transform(a, Matrix.CreateFromAxisAngle(d, angle));
Vector3 newpoint3 = P1 + Vector3.Transform(b, Matrix.CreateFromAxisAngle(d, angle));