Аналитическое решение задачи о пересечении многогранника и прямой линии. Отсечение нелицевых граней

Рассмотрим выпуклый многогранник. Для каждой грани построим вектор внешней нормали. Если вектор нормали грани составляет с вектором проектирования тупой угол (90£q£270), то эта грань не видима и она называется нелицевой. Еслиqявляется острым (0<q< 90 или 270 <q< 360), то грань видима и называется лицевой. Таким образом, еслиcosq> 0, то грань лицевая, а еслиcosq£0, то грань нелицевая.

Вычисления существенно упрощаются, если точку зрения выбрать на оси Z, т.е. направление проектирования будет перпендикулярно плоскости XOY, то видимость плоскостей можно определить при помощи координаты Z их нормалей. Если координата Z нормали > 0, то грань видима, а если координата Z нормали £ 0, то грань невидима.

Пронумеруем все видимые вершины выпуклого многоугольника против часовой стрелки, а невидимые - по ходу часовой стрелки. Для определения координата Z нормали достаточно 3-х вершин

3

Взгляд снаружи

(видимая грань)

Взгляд изнутри

(невидимая грань)

Найдем: dX1=X2-X1; dY1=Y2-Y1; dX2=X3-X2; dY2=Y3-Y2;

Вычислим Z=dX1* dY2 - dX2* dY1

Если Z > 0, то грань видима. Если Z £0, то грань невидима.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: