Соедините рациональный сплайн
rp = rpmak(breaks,coefs)
rp = rpmak(breaks,coefs,d)
rpmak(breaks,coefs,sizec)
rs = rsmak(knots,coefs)
rs
= rsmak(shape,parameters)
И rpmak
и rsmak
соединяют рациональный сплайн от минимальной информации. rsmak
также оборудован, чтобы обеспечить рациональные сплайны, которые описывают стандартные геометрические фигуры. Рациональный сплайн должен быть скаляром - или с векторным знаком.
rp = rpmak(breaks,coefs)
имеет тот же эффект как команда ppmak(breaks, coefs)
за исключением того, что получившаяся ppform помечена как рациональный сплайн, т.е. как rpform.
Чтобы описать, что это означает, позвольте R быть кусочным полиномом, соединенным командой ppmak(breaks,coefs)
, и позвольте r (x) = s (x)/w (x) быть рациональным сплайном, соединенным командой rpmak(breaks,coefs)
. Если v
является значением R в x, то v(1:end-1)/v(end)
является значением r в x. Другими словами, R (x) = [s (x); w (x)]. Соответственно, размерность цели r является той меньше, чем размерность цели R. В частности, размерность (цели) R должна быть по крайней мере 2, т.е. коэффициентами, заданными coefs
, должен быть d
- векторы с d
> 1. Смотрите ppmak
для того, как входные массивы, breaks
и coefs
интерпретируются, следовательно как они должны быть заданы в порядке произвести конкретный кусочный полином.
rp = rpmak(breaks,coefs,d)
имеет тот же эффект как ppmak(breaks,coefs,d+1)
, за исключением того, что получившаяся ppform помечена как являющийся rpform. Обратите внимание на то, что желание иметь тот дополнительный третий аргумент указывает, что размерность цели требует различных значений для него в rpmak
и ppmak
для того же массива коэффициентов coefs
.
rpmak(breaks,coefs,sizec)
имеет тот же эффект как ppmak(breaks,coefs,sizec)
за исключением того, что получившаяся ppform помечена как являющийся rpform, и целевая размерность взята, чтобы быть sizec(1)-1
.
rs = rsmak(knots,coefs)
так же связан с spmak(knots,coefs)
и rsmak(knots,coefs,sizec)
к spmak(knots,coefs,sizec)
. В частности, rsmak(knots,coefs)
соединяет рациональный сплайн в B-форме, т.е. это обеспечивает rBform. Смотрите spmak
для того, как входные массивы, knots
и coefs
интерпретируются, следовательно как они должны быть заданы в порядке произвести конкретный кусочный полином.
rs
= rsmak(shape,parameters)
обеспечивает рациональный сплайн в rBform, который описывает форму, задаваемую вектором символов shape
и дополнительный дополнительный parameters
. Определенный выбор:
rsmak('arc',radius,center,[alpha,beta]) rsmak('circle',radius,center) rsmak('cone',radius,halfheight) rsmak('cylinder',radius,height) rsmak('southcap',radius,center) rsmak('torus',radius,ratio)
с 1
значение по умолчанию для radius
, halfheight
и height
и источника значение по умолчанию для center
и дуга, пробегающая все углы от alpha
до beta
(значением по умолчанию является [-pi/2,pi/2]
), и конус, цилиндр и торус, сосредоточенный в начале координат с их главным кругом в (x, y) - плоскость и незначительный круг торуса, имеющего радиус radius*ratio
, значение по умолчанию для ratio
, являющегося 1/3
.
От них можно сгенерировать связанные формы аффинными преобразованиями, с помощью fncmb
(rs,transformation)
.
Все команды fn...
кроме fnint
, fnder
, fndir
может обработать рациональные сплайны.
Команды
runges = rsmak([-5 -5 -5 5 5 5],[1 1 1; 26 -24 26]); rungep = rpmak([-5 5],[0 0 1; 1 -10 26],1);
оба предоставляют описание рационального полиномиального r (x) = 1 / (x 2 + 1) на интервале [-5.. 5]. Однако вне интервала [-5.. 5], функция, данная runges
, является нулем, в то время как рациональный сплайн, данный rungep
, соглашается с 1 / (x 2 + 1) для каждого x.
Фигура вращаемого конуса сгенерирована командами
fnplt(fncmb(rsmak('cone',1,2),[0 0 -1;0 1 0;1 0 0])) axis equal, axis off, shading interp
Вращаемый конус дан рациональным квадратичным сплайном
Спираль, показывая спираль с несколькими обмотками, сгенерирована командами
arc = rsmak('arc',2,[1;-1],[0 7.3*pi]); [knots,c] = fnbrk(arc,'k','c'); helix = rsmak(knots, [c(1:2,:);aveknt(knots,3).*c(3,:); c(3,:)]); fnplt(helix)
Спираль
Для далее проиллюстрированных примеров смотрите NURBS и Другие Рациональные Сплайны