Угол прямой проекции в пространстве
Начало линии (желтый) и оси в [xc,yc,zc]
Конец строки в [xp,yp,zc]
,
a
,b
, c
углы, которые линия делает в пространстве.
Мне нужны углы, которые проекции линии (черная линия) создают на плоскостях xy, yz и xz.
A_y_to_z
: Угол проецируемой линии от оси y к оси z в плоскости xz.A_z_to_x
: Угол от оси z до оси x на плоскости zx.A_x_to_y
: Угол от оси x до оси y на плоскости xy.
Написание кода на Matlab
1 ответ
Вы можете рассчитать угол проекции на любую плоскость следующим образом:
Получение направления линии,
d = (xp - xc, yp - yc, zp - zc)
Нормализация
d
Вычисление скалярного произведения по нормали к плоскости,
dot(d, n) = d.x * n.x + d.y * n.y + d.z * n.z
Вычисление угла к нормали
a = acos(dot(d, n))
Наконец получить угол к плоскости, взяв
b = 90 - a
(в единицах градусов - примечание: большинство функций математической библиотеки используют радианы)
Особый случай: если dot(d, n) < 0
тогда угол a
будет больше 90 градусов. В этом случае, если вы хотите только острый угол, сделайте b = a - 90
вместо 90 - a
,
например, чтобы вычислить угол к плоскости xy, используйте n = (0, 0, 1)
то есть ось z, которая является нормалью к этой плоскости.