Методическое пособие по курсу "Интерактивные графические системы". Найханов В.В - 36 стр.

UptoLike

Для определения видимости ребер произвольного многогранника
берется какая-нибудь его вершина, и затем непосредственно определяется
ее количественная невидимость.
Далее прослеживается изменение количественной невидимости вдоль
каждого из ребер, выходящих из этой вершины. Эти ребра проверяются на
прохождение позади контурной линии, и в соответствующих точках их
количественная невидимость изменяется. Те части отрезка
, для которых
количественная невидимость равна нулю, сразу рисуются.
Следующим шагом является определение количественной
невидимости для всех ребер, выходящих из новой вершины, и т.д.
В результате определяется количественная невидимость связной
компоненты сцены, содержащей исходную вершину (и при этом она
рисуется).
В случае, когда рассматривается изменение количественной
невидимости вдоль ребра
, выходящего из вершины, принадлежащей
контурной линии, необходимо проверить, не закрывается ли это ребро
одной из граней, выходящей из этой вершины.
Так как для реальных объектов количество ребер, входящих в
контурную линию, намного меньше общего числа ребер, то алгоритм
Аппеля является более эффективным, чем алгоритм Робертса.
Замечание
Для повышения эффективности данного алгоритма также возможно
использование разбиения картинной плоскости.
3.3 Удаление невидимых граней.
3.3.1 Отсечение нелицевых граней
Рассмотрим многогранник, для каждой грани которого задан
единичный вектор внешней нормали. Несложно заметить, что если вектор
нормали грани n составляет с вектором l, задающим направление
проектирования, тупой угол, то эта грань заведомо не может быть видна.
Такие грани называются нелицевыми. В случае, когда соответствующий
угол является острым, грань называется лицевой.
В случае параллельного проектирования условия на угол можно
записать в виде
(n, 1)
0,
поскольку направление проектирования l от грани не зависит.
При центральном проектировании с центром в точке с вектор
проектирования для точки р будет равен
l = с -р.
Для определения того, является заданная грань лицевой или нет,
достаточно взять произвольную точку р этой грани и проверить выполнение
условия
(n, 1)
0.
      Для определения видимости ребер произвольного многогранника
берется какая-нибудь его вершина, и затем непосредственно определяется
ее количественная невидимость.
      Далее прослеживается изменение количественной невидимости вдоль
каждого из ребер, выходящих из этой вершины. Эти ребра проверяются на
прохождение позади контурной линии, и в соответствующих точках их
количественная невидимость изменяется. Те части отрезка, для которых
количественная невидимость равна нулю, сразу рисуются.
      Следующим      шагом    является   определение    количественной
невидимости для всех ребер, выходящих из новой вершины, и т.д.
      В результате определяется количественная невидимость связной
компоненты сцены, содержащей исходную вершину (и при этом она
рисуется).
      В случае, когда рассматривается изменение количественной
невидимости вдоль ребра, выходящего из вершины, принадлежащей
контурной линии, необходимо проверить, не закрывается ли это ребро
одной из граней, выходящей из этой вершины.
      Так как для реальных объектов количество ребер, входящих в
контурную линию, намного меньше общего числа ребер, то алгоритм
Аппеля является более эффективным, чем алгоритм Робертса.

Замечание
      Для повышения эффективности данного алгоритма    также   возможно
      использование разбиения картинной плоскости.


                   3.3 Удаление невидимых граней.

                  3.3.1 Отсечение нелицевых граней

      Рассмотрим многогранник, для каждой грани которого задан
единичный вектор внешней нормали. Несложно заметить, что если вектор
нормали грани n составляет с вектором l, задающим направление
проектирования, тупой угол, то эта грань заведомо не может быть видна.
Такие грани называются нелицевыми. В случае, когда соответствующий
угол является острым, грань называется лицевой.
      В случае параллельного проектирования условия на угол можно
записать в виде
      (n, 1) ≤ 0,
поскольку направление проектирования l от грани не зависит.
      При центральном проектировании с центром в точке с вектор
проектирования для точки р будет равен
      l = с -р.
      Для определения того, является заданная грань лицевой или нет,
достаточно взять произвольную точку р этой грани и проверить выполнение
условия
       (n, 1) ≤ 0.