10.10. Пример: формирование изображения чайника Чайник как программный объект включен в библиотеки GLUT и aux. Но сейчас он нас интере-суег только как средство демонстрации работоспособности и практической реализации алгоритма рекурсивного разбиения. На рис. 10.39 показаны "проволочное" изображение чайника, полученное после выполнения трех циклов разбиения, и закрашенное изображение, сформированное методом заливки каждого многоугольника серым цветом постоянной интенсивности. Обратите внимание на то, что порции имеют различный размер и кривизну. Поэтому использовать одно и то же количество циклов разбиения для разных участков поверхности нерационально - это порождает множество маленьких многоугольников, в которых совершенно нет необходимости. Желательно так организовать процесс разбиения, чтобы для формирования участков с большей кривизной выполнялось больше циклов разбиения, а для относительно плоских - меньше.
Рис. 10.39. Изображение чайника Юта Системные средства работы с кривыми Безье в OpenGL, которые мы подробно рассмотрим в разделе 10.12, позволяют формировать порции поверхностей при минимальном количестве вызовов функций API. Они выполняют рекурсивное разбиение значительно более эффективно, чем та "доморощенная" программа, которая была приведена выше.
10.11. Алгебраические поверхности Хотя квадратичные кривые и поверхности можно рассматривать как частный случай NURBS-кривых и поверхностей, этот класс криволинейных объектов настолько часто используется в практике автоматизации проектирования и в задачах компьютерной графики, что имеет смысл выделить пару страниц для их анализа.
10.11.1. Квадратичные поверхности Квадратичные поверхности (quadric surfaces) описываются алгебраическими уравнениями в неявном виде, в которых для каждого члена полинома xyJzk выполняется условие i+j+k < 2. Любая квадратичная поверхность может быть описана уравнением вида
q{x, y,z) = at ix2+2a)2xy+a2ïy2+aii"opengl5_500.html">⇐ Предыдущая| |Следующая ⇒