Заранее извиняюсь за отсутствие у меня знаний в этой области. У меня есть функция C ++, которая возвращает плоскость, как четыре числа с плавающей запятой, например, так:
float plane[4]; // will contain the computed plane equation result
Если эти поплавки A,B,C,D
Как я могу получить фактические углы плоскости (в градусах), как X, Y, Z?
Например, функция с тестовыми данными возвращает:
1, 0, 0, -341.336
Как я должен вычислять углы из этих данных?
Спасибо.
Коэффициенты 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
Других решений пока нет …