Рассмотрим выпуклый многогранник. Для каждой грани построим вектор внешней нормали. Если вектор нормали грани составляет с вектором проектирования тупой угол (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, то грань невидима.