Кривые Безье являются В-сплайн кривыми Кривые Безье уже были введены ранее двумя способами: через алгоритм де Кастельо и через полиномы Бернштейна. Теперь мы можем описать и третий подход: кривые Безье являются также и частным случаем В-сплайнов. Дело в том, что стыковочные функции В-сплайна, определенные на стандартном узловом векторе, при m - L + 1 в действительности являются полиномами Бернштейна! Это означает, что где k = О,..., L. Отметим, что, согласно принятому соглашению, верхний индекс у В( ) - это степень (degree), в то время как второй параметр у N( ) - это порядок (order). Чтобы понять это, посмотрим, что произойдет со стандартным узловым вектором, если порядок m увеличится до (1 + 1). (См. упражнения.) Значения первых m узлов - нулевые, а последние m узлов имеют единичное значение, так что t изменяется только в промежутке [0, \\. Если, например, L - 5 и тп - б, то мы получим узловой вектор Т = (О, О, О, О, 0,0,1,1,1,1,1,1). Тогда каждый из кусочных полиномов будет иметь только один диапазон, и каждый из этих полиномов имеет порядок m = L + 1. Это в точности совпадает с поведением полиномов Бернштейна. И в действительности полиномы Бернштейна можно вывести непосредственно из уравнения (11.58).

Вспомним, что основная причина перехода от кривых Безье к В-сплайн кривым состояла в желании обеспечить локальный контроль над формой кривой. При увеличении порядка полиномов В-сплайна на единицу поддержка каждой стыковочной функции В-сплайна расширяется на один диапазон, уменьшая тем самым возможность локального контроля. Когда порядок m достигает своего предельного значения L + 1, то получается кривая Безье; при этом локальный контроль минимален. На рис. 11.34 показано, как В-сплайн кривые при возрастании порядка становятся более «натянутыми», что уменьшает возможность локального контроля. В этом примере имеется восемь контрольных точек, поэтому кривая порядка m - 8 является кривой Безье. Все эти кривые были сгенерированы с помощью фрагмента кода, представленного в листинге 11.1. (Какой вид имеет кривая при m = 2?)


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