Алгоритм удаления невидимых граней

Алгоритм удаления невидимых граней (back-face removal algorithm) основан на том, что грань объекта может быть видимой только в том случае, если вектор внешней нормали к этой грани направлен в сторону наблюдателя. В противном случае грань будет невидима. Например, верхняя грань бруска, изображенного на рис. 3.22, считается видимой, если вектор внешней нормали N имеет положительную составляющую в направлении вектора М, проведенного из точки на грани к наблюдателю. Математически это записывается так:

  • если М ∙ N > 0, поверхность видима;
  • если М ∙ N = 0, поверхность проецируется в отрезок;
  • если М ∙ N < 0, поверхность невидима.
 
Алгоритм удаления невидимых граней
 
Этот алгоритм легко применить к объекту, ограниченному плоскими поверхностями, поскольку вектор нормали N постоянен в пределах поверхности. Однако к вогнутому1 объекту алгоритм неприменим, поскольку грань, направленная к наблюдателю, может быть закрыта другой гранью того же объекта (рис. 3.23). Та же проблема возникает в случае нескольких выпуклых объектов, которые могут закрывать грани друг друга. Следовательно, алгоритм удаления невидимых граней применим только к одному выпуклому объекту. Более того, алгоритм неприменим к объектам, для которых вектор внешней нормали определяется неоднозначно2 (см., например, рис. 3.24).
 
Если поверхности объекта не являются плоскими, значение N будет меняться в пределах одной грани в зависимости от выбранной точки. Одновременно может меняться и знак произведения М ∙ N. Это означает, что у одной и той же грани будут как видимые, так и невидимые участки. Поэтому грань должна быть разделена на две части вдоль кривой, на которой выполняется равенство М ∙ N = 0. Эта кривая называется силуэтной линией (silhouette line). После разделения грани вдоль силуэтной линии знак М ∙ N будет постоянным на каждой из частей грани. Процедура может показаться легкой, но рассчитать силуэтную линию очень сложно, а из-за этого теряется главное преимущество алгоритма удаления невидимых граней — простота реализации.
 
 

Алгоритм удаления невидимых граней

 

 

После того как все грани классифицируются как видимые или невидимые, на экран выводятся ребра видимых граней, в результате чего получается рисунок без невидимых линий. Если же нужно получить рисунок без невидимых поверхностей, видимые поверхности заливаются выбранными цветами.

 


Алгоритм удаления невидимых граней

 

 

1 Объект называется вогнутым, если по крайней мере две его грани смыкаются под внут ренним углом, большим 180°. Если все грани смыкаются с внутренними углами, меньшими 180°. объект называется выпуклым.

2 Такой объект вообще представляет собой достаточно сложную проблему, о чем будет рассказано в главе 5.

Смотрите также