5-11 ПОДГОНКА В-СПЛАЙНОВ
В предыдущем разделе рассматривалось построение В-сплайна по определяющему многоугольнику. Сейчас нам нужно найти многоугольник, порождающий В-сплайн, для заданного множества точек кривой, как показано на рис. 5-55.
Точка, лежащая в В-сплайне, должна удовлетворять уравнению (5-83). Запишем уравнение (5-83) для всех
заданных точек
,
,

,
где
, или в матричной форме
, (5-115)
где
,
,
.
При
матрица
квадратная, и определяющий многоугольник вычисляется непосредственно обращением матрицы, т.е.
. (5-116)
В этом случае В-сплайн проходит через все заданные точки, т. е. достигается точная подгонка. Кривая на всем протяжении
непрерывна, но при этом она может быть недостаточно гладкой на вид и иметь нежелательные изгибы.
Если указать меньшее число вершин многоугольника, чем количество заданных точек, т.е.
, кривая будет более гладкой. При этом матрица
становится неквадратной, и можно найти только общее решение. Воспользуемся тем, что произведение матрицы на транспонированную всегда дает квадратную матрицу (см. разд. 3-31).

Рис. 5-55 Построение многоугольника В-сплайна для заданного множества точек.
Вершины определяющего многоугольника, сглаживающего кривую заданы условием
,

и
. (5-117)
Оба метода подразумевают, что матрица
известна. Базисные функции
и, следовательно, матрицу
можно получить, если задан порядок В-сплайна
, количество точек многоугольника
, а также величина параметра вдоль кривой. При соблюдении условия
порядок и количество вершин произвольны.
Величина параметра
для каждой заданной точки - это мера расстояния до точки вдоль В-сплайна. Удобна аппроксимация параметра с помощью длин хорд между заданными точками; в частности, для
точек величина параметра в точке 

,
.
Максимальное значение параметра
обычно выбирается в качестве максимальной величина узлового вектора. Подобные методы затрагиваются в работах [5-15] и [5-22].
Для открытого равномерного узлового вектора с
кратными вершинами на концах кривая Безье получается при
.
Рассмотрим пример.
Пример 5-17 Подгонка В-сплайна
Даны пять точек , , , , . Найти определяющие многоугольники третьего порядка с пятью и четырьмя вершинами для В-сплайна, проходящего через данные точки. Использовать хордовую аппроксимацию параметра.
Сначала найдем длины хорд.
,
,
,

и
.
Итак




.
Для пятиугольника максимальное значение узлового вектора у В-сплайна третьего порядка . Здесь на единицу меньше количества вершин многоугольника. Узловой вектор с кратностью на концах имеет вид

Уравнение (5-115) с этими значениями выглядит следующим образом:

.
Решим относительно 


.
На рис. 5-56а изображены исходные точки, рассчитанные вершины многоугольника и кривая.
Для четырехугольника узловой вектор с кратностью на концах:
.

Рис. 5-56 Результаты для примера 5-17. (a) Пятиугольник; (b) четырехугольник.
Матрица :
.
Умножим на и обратим ее:
.
Тогда из уравнения (5-117) получим
.
На рис. 5-56b изображены исходные точки, рассчитанные вершины многоугольника и кривая.
|
Этот метод допускает произвольное расположение всех точек определяющего многоугольника в трехмерном пространстве, но иногда бывает удобно ограничиться плоскостью, например при подгонке В-сплайна под заданный контур корабля. В работе [5-26] приведен соответствующий метод как для кривых, так и для поверхностей. Его сущность состоит в том, что итеративно вычисляется параметр для фиксированной координаты до тех пор, пока значение на кривой при величине параметра, вычисленной по подогнанному многоугольнику, не попадает в некоторую окрестность фиксированного значения, т.е.
. Подгонка получается менее точной, но более удобной для модификаций.