Найти углы поворота плоскости, заданной ABCD

Заранее извиняюсь за отсутствие у меня знаний в этой области. У меня есть функция C ++, которая возвращает плоскость, как четыре числа с плавающей запятой, например, так:

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

Если эти поплавки A,B,C,DКак я могу получить фактические углы плоскости (в градусах), как X, Y, Z?

Например, функция с тестовыми данными возвращает:

1, 0, 0, -341.336

Как я должен вычислять углы из этих данных?

Спасибо.

-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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]