在给定ABCD的情况下找到平面的旋转角度

时间:2016-11-09 14:22:49

标签: c++ math 3d plane

因为我在这个领域缺乏知识而提前道歉。我有一个c ++函数返回一个Plane,就像四个浮点数一样:

float plane[4]; // will contain the computed plane equation result

如果这些浮点数是A,B,C,D,我如何得到平面的实际角度(以度为单位)为X,Y,Z?

例如,带有测试数据的函数返回:

1, 0, 0, -341.336

我应该如何根据这些数据计算角度?

谢谢。

1 个答案:

答案 0 :(得分:1)

系数A,B,C定义法向量。您可以通过arrcosine功能轻松找到轴的法线角度。 OX轴示例:

 Len = Length(N) = Sqrt(A^2+B^2+C^2)
 Angle(N, OX) = ArcCos(DotProduct(N, OX) / Len) =
                ArcCos(DotProduct(N, OX)) / Len) =
                ArcCos(DotProduct((A,B,C), (1,0,0))) / Len) =
                ArcCos((A * 1 + B * 0 + C * 0) / Len) =
                ArcCos(A / Len)
 for your example
  Angle(N, OX) = ArcCos(1/1) = 0  (normal coincides with OX ort)
  Angle(N, OY) = ArcCos(0/1) = Pi/2
  Angle(N, OZ) = ArcCos(0/1) = Pi/2