С45((3) = (1-(3)С4+(ЗС5.

Если четырехугольник плоский, то каждое значение цвета, сформированное по этим уравнениям, будет соответствовать определенной точке внутренней области многоугольника. Но если четырехугольник не плоский, т.е. четыре его вершины не принадлежат одной плоскости, то, хотя значения цвета и сформируются, положение соответствующих точек на криволинейной поверхности определить так просто не удастся.

Существует другой алгоритм, интерполяции вдоль строк растра (scan-line interpolation), который позволяет обойти сложности, связанные с формой поверхности, "натянутой" на контур четырехугольника. Этот алгоритм можно включить в процесс растрового преобразования. Многоугольник заполняется цветом только при выводе на экран. Но еще до выполнения растрового преобразования многоугольник проецируется

на двухмерную картинную плоскость (рис. 4.26). Если затем многоугольник закрашивается по строкам растра, строка за строкой, как показано на рис. 4.27, то для распределения цвета я Предполагается, что для работы с цветом используется RGB-cucme.ua, а интерполяция выполняется раздельно по каждому из первичных цветов.

4.4. Модель разноцветного куба вдоль строки растра используются только два противолежащих ребра изображения. OpenGL поддерживает этот метод не только для цветов, но и для других атрибутов, которые можно ассоциировать с вершинами. Подробнее об этом - в главе 6.

Проецирование многоугольника

Рис. 4.26. Проецирование многоугольника Рис. 4.27. Интерполяция вдоль строк растра Итак, на этой стадии у нас есть объект, который можно отобразить на экране тем же способом, который был использован для вывода трехмерного узора Серпинского в главе 2. Как вы, надеюсь, помните, тогда использовалась ортографическая проекция, которая формируется функцией glOrtho(). В разделе 4.5 будут рассмотрены геометрические преобразования, после знакомства с которыми можно будет "оживить" куб на экране, а также создавать более сложные объекты. Но сначала я познакомлю вас с новым средством поддержки операций с вершинами, которое появилось в версии OpenGL 1.1. Оно позволяет не только сократить объем программного кода, но и предоставляет в распоряжение прикладного программиста методы высокого уровня для работы с многогранниками.


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