Для примера,
circle = rsmak('circle');
обеспечивает рациональный сплайн, значения которого на его основном интервале прослеживают модуль круг, т.е. круг радиуса 1 с центром в источник, как команду
fnplt(circle), axis square
легко показывает; получившиеся выходы являются кругом на рисунке A Circle и Эллипсом, Оба Заданы Рациональным Сплайном.
Легко манипулировать этим кругом, чтобы получить родственные формы. Например, следующие команды растягивают круг в эллипс, вращают эллипс на 45 степени и перемещают его на (1,1), а затем строят график поверх круга.
ellipse = fncmb(circle,[2 0;0 1]); s45 = 1/sqrt(2); rtellipse = fncmb(fncmb(ellipse, [s45 -s45;s45 s45]), [1;1] ); hold on, fnplt(rtellipse), hold off
В качестве следующего примера, «круг», только что сконструированный, складывается из четырех частей. Чтобы выделить первый такой кусок, используйте следующие команды:
quarter = fnbrk(fn2fm(circle,'rp'),1); hold on, fnplt(quarter,3), hold off
В первой команде fn2fm
используется для изменения форм, от одной на основе B-формы до одной на основе ppform, а затем fnbrk
используется для извлечения первой части, и затем эта часть строится на верхнюю часть окружности в окружности и эллипсе, заданных рациональным сплайном, с шириной линии 3
чтобы сделать его выделяться.
Круг и эллипс, оба заданы рациональным сплайном
Как пример поверхности, команда rsmak('southcap')
предоставляет 3-векторный рациональный бикубический полином, значения которого на единичном квадрате [-1.. 1] ^ 2 заполните часть сферы единичного радиуса. Примыкайте к нему пять подходящих вращений, и вы получаете сферу единичного радиуса точно. Для рисунка команды генерируют две трети этой сферы, как показано на Части Сферы, Образованной Четырьмя Вращениями Квартального Рационального.
southcap = rsmak('southcap'); fnplt(southcap) xpcap = fncmb(southcap,[0 0 -1;0 1 0;1 0 0]); ypcap = fncmb(xpcap,[0 -1 0; 1 0 0; 0 0 1]); northcap = fncmb(southcap,-1); hold on, fnplt(xpcap), fnplt(ypcap), fnplt(northcap) axis equal, shading interp, view(-115,10), axis off, hold off
Часть сферы, образованной четырьмя вращениями квартального рационального
Выбрав представлять рациональный сплайн r = s/ w таким образом обычным сплайном R = [s; w], легко применить к рациональному сплайну все fn...
команды в функциях Curve Fitting Toolbox™ spline, за следующими исключениями. Интеграл рационального сплайна не должен быть рациональным сплайном, поэтому нет возможности расширяться fnint
к рациональным сплайнам. Производная рационального сплайна снова является рациональным сплайном, но один из примерно двух порядков. По этой причине fnder
и fndir
не будет касаться рациональных сплайнов. Вместо этого существует команда fntlr
для вычисления значения в заданном x
всех производных до заданного порядка заданной функции. Если эта функция является рациональной, необходимое вычисление основывается на факторах, приведенной в предыдущем абзаце.
Область команды r = rsmak(shape)
обеспечивает рациональные сплайны в rBform, которые описывают точно определенные стандартные геометрические формы, такие как 'circle'
, 'arc'
, 'cylinder'
, 'sphere'
, 'cone'
, 'torus'
. Область команды fncmb(r,trans)
может использоваться, чтобы применить стандартные преобразования к полученной форме. Для примера, если trans
является вектором-столбцом правой длины, форма будет переведена этим вектором, в то время как, если trans
является подходящей матрицей, подобной повороту, форма будет преобразована этой матрицей.
Область команды r = rscvn(p)
создает квадратичную rBFORM тангенциально-непрерывную кривую, состоящую из круглых дуг и проходящую через заданную последовательность, p
, точек в плоскости.
Специальная рациональная форма сплайна, называемая NURBS, стала стандартным инструментом в CAGD. NURBS по определению является любым рациональным сплайном, для которого и s и w находятся в одной и той же B-форме, при этом каждый коэффициент для s содержит явно соответствующий коэффициент для w как фактор:
Нормированные коэффициенты, a (:, i) для сплайна числителя, более легко используются в качестве контрольных точек, чем ненормализованные коэффициенты v (i) a (:, i), используемые в rBform. Тем не менее, этот тулбокс не предоставляет специальной формы NURBS, а только более общий рациональный сплайн, но в обеих B-форме (называемой rBform
внутренне) и в ppform (называется rpform
внутренне).
Рациональный сплайн circle
использованный ранее собран в rsmak
кодом, подобным следующему.
x = [1 1 0 -1 -1 -1 0 1 1]; y = [0 1 1 1 0 -1 -1 -1 0]; s45 = 1/sqrt(2); w =[1 s45 1 s45 1 s45 1 s45 1]; circle = rsmak(augknt(0:4,3,2), [w.*x;w.*y;w]);
Обратите внимание на внешний вид сплайна знаменателя как последнего компонента. Также обратите внимание, как коэффициенты сплайна знаменателя появляются здесь явным образом как коэффициенты соответствующих коэффициентов сплайна числителя. Нормированная последовательность коэффициентов [x;y]
очень прост; он состоит из вершин и средних точек, в надлежащем порядке, «единичного квадрата». Получившийся многоугольник управления является касательным к окружности в местах, где четыре квадратичные части, которые образуют круг, примыкают.
Подробное обсуждение NURBS смотрите в [Г. Фарин, NURBS, 2-е изд., AKPeters Ltd, 1999] или [Les Piegl and Wayne Tiller, The NURBS Book, 2 изд., Springer-Verlag, 1997].