Рассмотрим, как осуществляются эти проверки.

Пусть задано ребро АВ, где точка А имеет координаты {хш уа), а точка В - (хь, уь). Прямая, проходящая через отрезок АВ, задается уравнениями х~ха +*{ХЬ ~ха\

У = Уа +*{УЬ ~Уа\ причем сам отрезок соответствует значениям параметра 0 < t < 1. Данную прямую можно задать неявным образом как F(x, у) = 0, где

F(X, у) = {уЬ- У Ж* -Хъ)-(УЪ- *а) (У - .Уа)Предположим, что проекция грани задается набором проекций вершин Рь Л< с координатами (х,, у,), i= 1, …, и. Обозначим через F, значение функции F в точке Рх и рассмотрим z-й отрезок проекции грани Р,Р,. |. Этот отрезок пересекает прямую АВ тогда и только тогда, когда функция F принимает значения разных знаков на концах этого отрезка, а именно при Случай, когда Fr,j - 0, будем отбрасывать, чтобы дважды не засчитывать прямую, проходящую через вершину, для обоих выходящих из нее отрезков. Итак, мы считаем, что пересечение имеет место в двух случаях:

F,>ft/v,<0, Ft < 0, Fh , > 0.

Точка пепесечения оппелеляется соотношениями

Отсюда легко находится значение параметра /:

Возможны следующие случаи:

1. Отрезок не имеет пересечения с проекцией грани, кроме, быть может, одной точки. Это может иметь место, когда прямая Л# не пересекает ребра проекции (рис. 10.18, д); Компьютерная графика. Полигональные модели

прямая АВ пересекает ребра в двух точках / и /2, но либо / < 0, /2 < 0, либо / > 1, Л>> 1 (рис. 10.18,0);

прямая АВ проходит через одну вершину, не задевая внутренности треугольника (рис. 10.18, в).

Очевидно, что в этом случае соответствующая грань никак не может закрывать собой ребро АВ.

2. Проекция ребра полностью содержится внутри проекции грани (рис. 10.19, а). Тогда есть две точки пересечения прямой АВ и границы грани и / < 0 < 1 < /2. Если грань.лежит ближе к картинной плоскости, чем ребро, то ребро полностью невидимо и удаляется.

3. Прямая АВ пересекает ребра проекции грани в двух точках и либо

/] < 0 < Ґ2 ^ 1 , либо 0 < < 1 < ?2 (Рис- Ю.19, би в ). Если ребро Л/3 находится дальше от картинной плоскости, чем соответствующая грань, то оно разбивается на две части, одна из которых полностью закрывается гранью и потому отбрасывается. Проекция второй части лежит вне проекции грани и поэтому этой гранью не закрывается.


⇐ Предыдущая| |Следующая ⇒