15.1. Введение
Предположим, что заданы трехмерный объем и видовые параметры, описывающие тип проекции, проекционную плоскость и т. д., и требуется определить, какие ребра и поверхности объекта видимы, если смотреть из центра проекции (для центральных проекций) или вдоль направления проецирования (для параллельных проекций). Только эти ребра и поверхности мы будем выводить на экран. Хотя задача формулируется просто, для ее решения требуется много процессорного времени, поэтому поощряются разработки многочисленных и тщательно структурированных алгоритмов.
Необходимость этих разработок следует из анализа двух основных подходов к решению проблемы. В первом подходе объект рассматривается как совокупность п-угольных граней и необходимо определить, какая грань видна в каждой точке разрешения экрана дисплея. Чтобы выяснить при этом, какая из граней является ближайшей к наблюдателю, необходимо проверить все п граней для каждой разрешаемой точки. Для N таких точек число проверок пропорционально nN, где N обычно лежит в диапазоне 250 000— 4 000 000.
Во втором подходе каждая из п граней сравнивается с оставшимися п—1 гранями. Число проверок в этом случае пропорционально п2. Поэтому можно предположить, что второй подход лучше даже для наибольших из реально встречающихся значений п (100000—200000). Однако каждый из индивидуальных шагов при втором подходе требует больше времени, поэтому этот процесс окажется медленнее даже при меньших п.
Сазерленд, Спрулл и Шумахер [454] назвали эти подходы алгоритмами, работающими соответственно в пространстве изображения и в пространстве объекта. Они рассмотрели и классифицировали десять алгоритмов, разработанных до 1972 г. Ниже описаны четыре из них, а также некоторые другие алгоритмы, созданные после 1972 г.
Алгоритмы удаления скрытых поверхностей необходимо строить так, чтобы каждый их шаг был как можно более эффективным. В двух следующих разделах приведены некоторые общие рекомендации. Затем изложены специализированные алгоритмы, которые позволяют стирать скрытые поверхности на изображениях трехмерных объектов, составленных из полигональных граней. Некоторые из этих алгоритмов можно использовать для удаления скрытых ребер. Кратко описаны алгоритмы, которые предназначены для изображения объектов, заданных кусками криволинейной поверхности. Класс специализированных алгоритмов, предназначенных : для отображения однозначных функций двух переменных [68, 514], здесь не рассматривается.
- 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
- Событие. Сообщение. Контекст.