因为我在这个领域缺乏知识而提前道歉。我有一个c ++函数返回一个Plane,就像四个浮点数一样:
float plane[4]; // will contain the computed plane equation result
如果这些浮点数是A,B,C,D
,我如何得到平面的实际角度(以度为单位)为X,Y,Z?
例如,带有测试数据的函数返回:
1, 0, 0, -341.336
我应该如何根据这些数据计算角度?
谢谢。
答案 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