exponenta event banner

rpmak

Собрать рациональный сплайн

Синтаксис

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-векторы с  > 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-форме, т.е. обеспечивает rB-форму. Посмотрите 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/( x2 + 1) на интервале [-5.. 5]. Однако за пределами интервала [-5.. 5], функция, заданная runges равно нулю, в то время как рациональный сплайн, заданный rungep соответствует 1/( x2 + 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 и другие рациональные сплайны.

См. также

| | |