15.3. Исключение сравнений по глубине. Оболочки
В некоторых алгоритмах, чтобы избежать ненужных сравнений между объектами, используются экранные оболочки, введенные в гл. 4 для исключения лишних отсечений. На рис. 15.3 показаны два трехмерных многоугольника, их проекции, а также прямоугольные оболочки, окружающие проекции. Оболочки в этом случае не пересекаются и, следовательно, не надо проверять, не перекрываются ли ребра одного многоугольника с ребрами другого.
чтобы выяснить, например, перекрываются ли два многоугольника в направлении z. На рис. 15.5 показано, как в таком случае используются оболочки; здесь оболочкой является бесконечная область, ^ограниченная минимальным и максимальным значениями г для каждого многоугольника. Перекрытие по оси z отсутствует, если
Во всех этих случаях наиболее сложным является нахождение самих оболочек. Их можно определить, просматривая снова список вершин координат и фиксируя наибольшие и наименьшие значения по каждой координате.
Предположим, что многоугольники были подвергнуты преобразованию, описываемому матрицей М (разд. 15.2). Тогда проецирование на плоскость ху выполняется тривиально путем установки z=0 для каждой вершины. Если бы это преобразование не применялось, для построения проекции потребовалось бы деление на г.
Если прямоугольные оболочки перекрываются, имеет место один из двух случаев (показанных на рис. 15.4): либо проекции многоугольников также перекрываются (случай а), либо этого не происходит (случай б). В обоих случаях для более подробного анализа требуются дополнительные сравнения. В случае б с их помощью будет установлено, что на самом деле два многоугольника не перекрываются: пересечение оболочек в некотором смысле оказалось «ложной тревогой».
Можно воспользоваться оболочками, как в гл. 9, для окружения самих многоугольников, а не их проекций — в этом случае оболочки становятся пространственными. С другой стороны, их можно применить для указания границ в пределах одного измерения,
- 1. Векторные дисплеи.
- 2. Растровые дисплеи.
- Программистская модель интерактивной графики
- Лекция 2
- 640X480
- Лекция 4. Анимация
- Лекция 7. Алгоритмы растровой графики. Растровая графика.
- Лекция 9
- Перспективные проекции
- 15.1. Введение
- 15.2. Упрощение сравнений по глубине: перспективное преобразование
- 15.3. Исключение сравнений по глубине. Оболочки
- 15.4. Алгоритм сортировки по глубине
- 15.5. Алгоритм, использующий z-буфер
- 15.6. Алгоритмы построчного сканирования
- 15.7. Алгоритмы разбиения области
- 15.8. Эффективность алгоритма
- 15.9. Алгоритмы для криволинейных поверхностей
- Введение в OpenGl
- Void glVertex[2 3 4][s I f d] (type coords)
- Void glVertex[2 3 4][s I f d]V (type *coords)
- Gl_points каждая вершина задает координаты некоторой точки. Gl_lines каждая отдельная пара вершин определяет отрезок; ес-ли задано нечетное число вершин, то последняя вершина игнорируется.
- Gl_polygon последовательно задаются вершины выпуклог многоугольника.
- OpenGl в Delphi
- Событие. Сообщение. Контекст.