- •Оглавление
- •1.Аксонометрическая проекция. Виды аксонометрических проекций.
- •2.Алгоритм Брезенхейма для развертки отрезка
- •5.Косоугольные проекции Косоугольная фронтальная изометрия
- •Косоугольная горизонтальная изометрия
- •Косоугольная фронтальная диметрия
- •6.Кривые Безье (https://learn.Javascript.Ru/bezier)
- •7.Кубический сплайн
- •8.Матрицы аффинных преобразований в пространстве.
- •9.Матрицы аффинных преобразований на плоскости.
- •10.Метод z-буфера
- •12.Методы количественной невидимости
- •Алгоритм Аппеля.
- •Методы двоичного разбиения пространства.
- •13.Методы решения задач загораживания
- •1.Метод переборного типа.(«грубой силы»).
- •18. Метод z-буфера.
- •14.Особенности проекций гладких отображений
- •16.Растровая развертка отрезка
- •17.Растровое представление геометрических объектов
- •18.Тест принадлежности точки многоугольнику
- •19.Фракталы
- •20.Фрактальное сжатие
- •21.Заполнение многоугольников
- •23.Алгоритм Варнака
- •26.Методы приоритетов, метод художника
- •27.Алгоритм Ву
26.Методы приоритетов, метод художника
При изображении сцен со сплошным закрашиванием поверхностей можно воспользоватьсяметодом художника: элементы сцены изображаются в последовательности от наиболее удаленных от наблюдателя к более близким. При экранировании одних участков сцены другими невидимые участки просто закрашиваются. Если вычислительная трудоемкость получения изображения для отдельных элементов достаточно высока, то такойалгоритмбудет не самым лучшимпоэффективности, но зато мы избежим анализа (и вполне возможно, тоже дорогостоящего), позволяющего установить, какие же из элементов изображать не надо в силу их невидимости. Например, при изображении правильного многогранника мы довольно легко можем упорядочить егогранипо глубине, но такаясортировкадля произвольного многогранника возможна далеко не всегда. Мы рассмотрим применение этого метода на примере изображения поверхности, заданной в виде однозначной функции двух переменных.
Пусть поверхность задана уравнением
В качестве картинной плоскости выберем плоскость . В области задания функции на осях координат построим сетку узлов:
Тогдапредставляют собой набор "высот" для данной поверхностипоотношению к плоскости. Поверхность будем аппроксимировать треугольниками с вершинами в точкахтак, что каждому прямоугольнику сетки узлов будут соответствовать два треугольника:и. Для построения наглядного изображения поверхности повернем ее на некоторый угол сначала относительно оси, а затем относительно оси, причем направление вращения выберем таким образом, что точки, соответствующие углам координатной сетки, расположатся в следующем порядкепоудаленности от картинной плоскости:, т.е. точкаокажется наиболее близкой к картинной плоскости (и наиболее удаленной от наблюдателя). Предполагается, что способ закрашивания треугольников уже определен. Тогда процесс изображения поверхности можно коротко записать так:
При такой последовательности вывода изображения мы продвигаемся от самого удаленного треугольника к все более близким, частично закрашивая уже изображенные участки поверхности.
Алгоритмхудожника можно применять для полностью закрашенной сцены, а для каркасного изображения, когдаобъект представляется в виде набора кривых или ломаных линий, он непригоден. Для этого случая предложен еще один метод, весьма эффективный -метод плавающего горизонта. Вернемся к предыдущему примеру изображения поверхности. Каркасное изображение получается путем изображения кривых, получаемых при пересечении этой поверхности плоскостямии(рис. 6.4).
На самом деле мы будем рисовать четырехугольник и одну диагональ. В процессе рисования нам понадобятся два целочисленных массива:(нижний горизонт) и(верхний горизонт) размерностью, соответствующей горизонтальному размеру экрана в пикселях. Они нужны для анализа видимости участков изображаемых отрезков. Сначала мы инициализируем верхний горизонт нулем, а нижний - максимальным значением вертикальнойкоординатына экране. Каждая выводимая на экран точка может закрывать другие точки, которые "скрываются за горизонтом".Помере рисования нижний горизонт "опускается", а верхний "поднимается", постепенно оставляя все меньше незакрытого пространства. В отличие от метода художника, здесь мы продвигаемся от ближнего угла к дальнему.