Создание кривых и поверхностей
ных функций на основе сплайнов - кусочных полиномов, соединяемых таким образом, что производные различных порядков остаются повсюду непрерывными. Базисные функции особого семейства - В-сплайны - способны генерировать сплайн произвольного вида и имеют наименьшую поддержку в классе таких форм. Поэтому они предоставляют дизайнеру наибольшую степень локального контроля и в то же время обладают всеми полезными свойствами функций Безье. При увеличении порядка полиномов В-сплайнов до совпадения их с числом используемых контрольных точек В-сплайны превращаются в полиномы Бернштейна.
Еще большая степень контроля над формой кривой обеспечивается при использовании ЫиКВБ-кри-вых. Эти кривые сложнее, чем кривые Безье или В-сплайны, однако они включают В-сплайны как частный случай и способны в точности представлять конические сечения. Программная среда САСБ, поддерживающая ЫиКВБ-алгоритм, предоставляет дизайнеру единое универсальное средство для создания огромного разнообразия кривых различных форм.
Мы также рассмотрели алгоритмы для принудительного прохождения кривой через заданные контрольные точки, вместо обычного приближения к ним. Мы уделили особое внимание кривым на основе кусочных кубических полиномов и разработали такие условия, связывающие различные коэффициенты, чтобы кривая не просто интерполировала точки, но также имела определенную скорость в каждой точке сопряжения. Эта скорость может задаваться пользователем с целью обеспечить большую гладкость в точках соединения или исходя из локальной геометрической информации о соседних контрольных точках. Могут вводиться дополнительные параметры, такие как натяжение и смещенность, которые предоставляют пользователю возможность корректировать окончательную форму кривой.
В случае В-сплайнов используется другой подход к интерполяции точек: обычно кривая должна проходить только через первую и последнюю контрольные точки. Хитрость состоит в том, чтобы вычислить второй набор контрольных точек так, чтобы базирующаяся на них В-сплайн кривая проходила через каждую из исходных контрольных точек. Этот подход рассматривается в тематическом задании 11.6.