ВУЗ:
Составители:
120
Для отрезка с началом в точке P
1
(x
1
, y
1
) и концом в точке
P
2
(x
2
, y
2
), если он не вертикален (
(
)
(
)
∞≠−
−
=
1212
xxyym ), та-
кие точки пересечения на прямых, проведенных через левое и
правое ребра, будут иметь координаты соответственно:
x = x
л
,
()
11л
yxxmy
+
−
=
; x = x
п
,
()
11п
yxxmy +−
=
.
Если отрезок не горизонтален (
0m
≠
), координаты анало-
гичных точек пересечения на прямых, проведенных через нижнее
и верхнее ребра, будут равны соответственно:
()
11н
xmyyx +−= , y = y
н
;
(
)
11в
xmyyx +
−
=
, y = y
в
.
Последовательность действий в алгоритме двумерного
внутреннего отсечения Сазерленда-Коэна следующая. С исполь-
зованием кодов концов отрезок проверяется на полную види-
мость и безусловную невидимость. Если проверка не дает оче-
видного результата, поочередно работают четыре отсекателя в
виде бесконечных прямых, проходящих соответственно через ле-
вое, правое, нижнее и верхнее ребра отсекающего
окна. В каждом
случае проверяется, не лежит ли отрезок полностью в той же сто-
роне от отсекающей прямой, что и само окно (очевидно, напри-
мер, что если в первом бите кодов концов отрезка содержится
0,
отрезок полностью лежит правее левой отсекающей прямой). Ес-
ли это так, переходят к следующей отсекающей прямой. В про-
тивном случае проверяют, не лежит ли начало отрезка в той же
стороне, что и окно. Если это подтверждается, начало и конец от-
резка
меняются местами. Начало отрезка в любом случае оказы-
вается по отношению к отсекающей прямой в стороне, противо-
положной той, где находится окно. После определения точки пе-
ресечения прямой, проведенной через отрезок, с текущей отсе-
кающей прямой начало отрезка переносится в эту точку (уда-
ляется часть отрезка). Полученный новый отрезок вновь
проверяется
на полную видимость и безусловную невидимость. В
зависимости от результата переходят к следующей отсекающей
прямой или алгоритм заканчивает работу.
Алгоритм плавающего горизонта
120
Для отрезка с началом в точке P1 (x1 , y1) и концом в точке
P2 (x2 , y2), если он не вертикален ( m = ( y2 − y1 ) ( x2 − x1 ) ≠ ∞ ), та-
кие точки пересечения на прямых, проведенных через левое и
правое ребра, будут иметь координаты соответственно:
x = xл , y = m ( x л − x1 ) + y1 ; x = xп , y = m ( xп − x1 ) + y1 .
Если отрезок не горизонтален ( m ≠ 0 ), координаты анало-
гичных точек пересечения на прямых, проведенных через нижнее
и верхнее ребра, будут равны соответственно:
x = ( yн − y1 ) m + x1 , y = yн ; x = ( yв − y1 ) m + x1 , y = yв .
Последовательность действий в алгоритме двумерного
внутреннего отсечения Сазерленда-Коэна следующая. С исполь-
зованием кодов концов отрезок проверяется на полную види-
мость и безусловную невидимость. Если проверка не дает оче-
видного результата, поочередно работают четыре отсекателя в
виде бесконечных прямых, проходящих соответственно через ле-
вое, правое, нижнее и верхнее ребра отсекающего окна. В каждом
случае проверяется, не лежит ли отрезок полностью в той же сто-
роне от отсекающей прямой, что и само окно (очевидно, напри-
мер, что если в первом бите кодов концов отрезка содержится 0,
отрезок полностью лежит правее левой отсекающей прямой). Ес-
ли это так, переходят к следующей отсекающей прямой. В про-
тивном случае проверяют, не лежит ли начало отрезка в той же
стороне, что и окно. Если это подтверждается, начало и конец от-
резка меняются местами. Начало отрезка в любом случае оказы-
вается по отношению к отсекающей прямой в стороне, противо-
положной той, где находится окно. После определения точки пе-
ресечения прямой, проведенной через отрезок, с текущей отсе-
кающей прямой начало отрезка переносится в эту точку (уда-
ляется часть отрезка). Полученный новый отрезок вновь
проверяется на полную видимость и безусловную невидимость. В
зависимости от результата переходят к следующей отсекающей
прямой или алгоритм заканчивает работу.
Алгоритм плавающего горизонта
Страницы
- « первая
- ‹ предыдущая
- …
- 118
- 119
- 120
- 121
- 122
- …
- следующая ›
- последняя »
