Создание кривых и поверхностей
Безье и начинается поиск лучших методов проектирования кривых, при этом особое внимание уделяется кусочным полиномам. Это приводит к изучению сплайн-функций.
В разделе 11.7 «Базисные функции В-сплайнов» представлены В-сплайны, чьи полезные свойства изучаются в разделе 11.8 «Полезные для проектирования свойства В-сплайн кривых». В разделе 11.9 «Рациональные сплайны и NURBS-кривые» описываются кривые на основе неоднородных рациональных В-сплайнов (NURBS). В разделе 11.10 «Краткое знакомство с интерполяцией» рассматриваются некоторые методы поиска кривых, интерполирующих контрольные точки. Раздел 11.11 «Моделирование криволинейных поверхностей» посвящается проектированию сложных форм поверхностей; здесь же понятия главы 6 распространяются на поверхности, созданные с помощью кривых Безье, В-сплайнов и NURBS-кривых. Рассматриваются проблемы бесшовного соединения двух участков поверхности; в качестве примера плавного сопряжения приводится классический чайник. Представлено несколько примеров проектирования поверхностей. Тематические задания в конце главы содержат проекты для описания и рисования различных параметрических кривых и поверхностей. В них описана игра «Эллиптипул», а также проекты для рисования кривых Безье, В-сплайнов и NURBS-кривых и поверхностей.
11.1. Введение Одни формы представляют особый интерес, поскольку они способны доставить эстетическое удовольствие или потому, что они отображают какой-нибудь реальный объект, существующий в природе. Другие формы вычисляются в каких-либо аналитических программах в качестве наилучшего приближения для данной задачи, как, например, изгиб крыла самолета, обеспечивающий максимальную подъемную силу. Третьи формы, подобно кривой крыла автомобиля, спроектированы человеком на основе сложного сочетания инженерной целесообразности, простоты изготовления и интуитивного чувства, что это понравится клиентам.
Такие формы, как логарифмические спирали, суперэллипсы или циклоиды, имеют краткую математическую формулировку, удобную для анализа, однако это мало поможет, если мы захотим написать подпрограмму для их рисования. Таким образом, нам необходимы методы преобразования этих форм из одного представления в другое, более подходящее для определенных задач. Еще одним видом форм являются «свободные формы», которые в большей степени базируются на данных, чем на математических выражениях. Такие формы мы также хотим использовать в программе, например, чтобы найти, где одна такая кривая пересекается с другой.