qweqweqe123123

B-сплайн

Вспомните, что степень кривой Безье определяется количеством задающих точек, причем все они влияют на форму всей кривой. Эти особенности кривых Безье создают определенные неудобства. Во-первых, при аппроксимации кривой сложной формы при помощи кривой Безье неизбежно используется множество задающих точек, в результате чего получается кривая высокого порядка. Такая кривая может осциллировать, но она к тому же создает большую вычислительную нагрузку на компьютер. Почему бы в таком случае не попытаться представить ту же исходную кривую множеством кривых Безье низших порядков, чтобы избежать этих неприятностей? Проблема в том, что соединение кривых с обеспечением непрерывности производных нужных порядков оказывается довольно сложной процедурой.

Во-вторых, трудоемким оказывается локальное изменение формы кривой. Кажется естественным переместить задающие точки вблизи изменяемого участка кривой, и действительно, это приводит к модификации нужной области, но вместе с ней изменяется вся кривая целиком. Эта особенность называется свойством глобальности изменений (global modification property). Глобальность изменений нежелательна при создании кривых заданной формы, поскольку кривые всегда создаются или проектируются путем непрерывной модификации грубой формы начального приближения. В системах автоматизированного проектирования желательно наличие прямо противоположного свойства — локальности изменений (local modification property).

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

В 1972 г. Кокс [41] и де Бур [43] предложили использовать функции Nik(u), определяемые рекурсивно. Кривая, которая строится таким образом, называется В-сплайном (B-spline) и записывается в следующем виде:

B-сплайн

где

B-сплайн

B-сплайн

Значения ti называются узловыми — они ограничивают отрезки значений параметра, внутри которых функции сопряжения имеют ненулевые значения 1. В формуле (6.32) неопределенность 0/0 считается равной нулю. Как следует из этого уравнения, для определения п + 1 функций сопряжения необходимо задать п + k + 1 узловых значений от t0 до tn+k. Разные методы задания узловых значений позволяют получить разные функции сопряжения и, соответственно, разные кривые. Ниже мы расскажем, как это делается. Обратите внимание, что из фор- мулы (6.32) следует, что одновременный сдвиг всех узловых значений на одно и то же число не приводит к изменению формы кривой. При этом происходит лишь изменение диапазона значений параметра для уравнения (6.31).

Проверим, удовлетворяют ли функции сопряжения, заданные уравнениями (6.32) и (6.33), требованиям, изложенным в начале раздела. Из уравнения (6.32) следует, что степень Nik(u) на единицу выше, чем у Nik-1(u) и Ni+1,k-1(u). Следователь- но, Ni2(u) имеет степень 1, поскольку Nj 1(u) — константа, а Ni3(u) по той же причине имеет степень 2. Продолжая в том же духе, можно прийти к выводу, что функция Nik(u) имеет степень k - 1. Таким образом, степень В-сплайна определяется не числом задающих точек, а значением k, которое должно быть на единицу больше желаемого значения степени кривой. Значение k называется порядком В-сплайна (order of the B-spline curve).

Чтобы показать, что любой участок В-сплайна определяется лишь конечным числом задающих точек, рассмотрим сегмент кривой, соответствующий значениям параметра из отрезка [ti, ti+1]. Влиять на этот сегмент будут те задающие точки, функции сопряжения которых (порядка к) отличны от нуля на отрезке  [ti, ti+1]. Среди функций первого порядка от нуля отлична только Ni1(u). Подставив Ni1(u) в правую часть формулы (6.32), мы получим ненулевые на рассматриваемом отрезке функции Ni2(u) и Ni - 1.2(u). Первая функция получается подстановкой Ni1(и) в первое слагаемое, а вторая функция — подстановкой во второе слагаемое. Затем по ненулевым функциям Ni2(u) и Ni - 1.2(u) мы получаем функции третьего порядка и т. д., пока не будут получены функции порядка к. Распространение ненулевых значений иллюстрирует рис. 6.5.

B-сплайн

По рис. 6.5 видно, что ненулевые значения на отрезке  [ti, ti+1] будут иметь только функции Ni-k+1,k, Ni-k+2,k, .., Ni,k. Поэтому и влиять на форму отрезка кривой будут только точки Pi-k+1, Pi-k+2,..., Рi (всего k штук). Например, если взять кривую четвертого порядка, то на форму отрезка будут влиять четыре задающие точки, а все остальные не будут.

Займемся теперь определением п + k + 1 узловых значений от t0 до tn+k. Узлы бывают двух основных типов: периодические и непериодические. Периодические узлы определяются из равенства

B-сплайн

Непериодические узлы задаются формулой

B-сплайн

Главное отличие узлов разных типов состоит в том, что первый и последний непериодические узлы повторяются k раз. Повторение узлов приводит к тому, что В-сплайн проходит через первую и последнюю задающие точки подобно кривой Безье. В периодическом В-сплайне первая и последняя точки влияют на форму кривой точно в той же степени, что и все остальные точки, а потому кривая не проходит через них. Вообще говоря, функция сопряжения для периодических узлов повторяется через равные промежутки значений параметра, почему узлы и называются периодическими. Непериодические кривые чаще используются в системах автоматизированного проектирования, поскольку большинству конструкторов привычнее работать с кривыми, проходящими через первую и последнюю точки.

Выражения (6.34) и (6.35) показывают, что расстояние между соседними узлами всегда одинаково и равно единице. Такие узлы называются однородными (uniform knots), как и В-сплайн, через них проходящий. Однородный В-сплайн может быть как периодическим, так и непериодическим. При изменении формы кривой конструкторы часто добавляют2 и удаляют узлы, в результате чего В-сплайн становится неоднородным. Поскольку однородность является частным случаем неоднородности, неоднородные В-сплайны считаются обобщением однородных. Таким образом, большинство САПР позволяют создавать и модифицировать неоднородные и непериодические В-сплайны.

Приведенные ниже примеры должны прояснить суть описываемых в этом разделе понятий.

 


1 Когда и совпадает с границей интервала, следует быть аккуратным, поскольку для любого значения и только одна функция Ni t(u) может быть отличной от нуля. Это предполагается в определении (6.32). Например, когда и - ti, только одна из функции N0.1(t1) и N1.1(t1) может быть равна единице, хотя из уравнения (6.33) следует, что они обе могли бы иметь это значение. В любом случае значение Р(t1) окажется одним и тем же.

2 При создании поверхности из набора В-сплайнов необходимо, чтобы узловые значения всех кривых были одинаковыми. Подробно об этом рассказывается в работе Тиллера [152].

Смотрите также