Угол прямой проекции в пространстве

Начало линии (желтый) и оси в [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 ответ

Решение

Вы можете рассчитать угол проекции на любую плоскость следующим образом:

  1. Получение направления линии, d = (xp - xc, yp - yc, zp - zc)

  2. Нормализация d

  3. Вычисление скалярного произведения по нормали к плоскости, dot(d, n) = d.x * n.x + d.y * n.y + d.z * n.z

  4. Вычисление угла к нормали a = acos(dot(d, n))

  5. Наконец получить угол к плоскости, взяв b = 90 - a (в единицах градусов - примечание: большинство функций математической библиотеки используют радианы)

Особый случай: если dot(d, n) < 0тогда угол a будет больше 90 градусов. В этом случае, если вы хотите только острый угол, сделайте b = a - 90 вместо 90 - a,

например, чтобы вычислить угол к плоскости xy, используйте n = (0, 0, 1)то есть ось z, которая является нормалью к этой плоскости.

Другие вопросы по тегам