NURBS and Other Rational Splines
Introduction to Rational Splines
This requires w to be scalar-valued, but s is often chosen to be vector-valued. Further, it is desirable that w(x) be not zero for any x of interest.
Rational splines are popular because, in contrast to ordinary splines, they can be used to describe certain basic design shapes, like conic sections, exactly.
rsform: rpform, rBform
The two splines, s and w, in the rational spline r(x)=s(x)/w(x) need not be related to one another. They could even be of different forms. But, in the context of this toolbox, it is convenient to restrict them to be of the same form, and even of the same order and with the same breaks or knots. For, under that assumption, you can represent such a rational spline by the (vector-valued) spline function
whose values are vectors with one more entry than the values of the rational spline
r, and call this the rsform of the rational spline, or, more precisely, the rpform or rBform, depending on whether s and
w are in ppform or in B-form. Internally, the only thing that
distinguishes these rational forms from their corresponding ordinary spline forms,
rpform and B-form, is their form part, i.e., the output obtained from
fnbrk(r,'form'). This is enough to alert the
fn... commands to act appropriately on a function in one of the
For example, as is done in
fnval, it is very
easy to obtain r(x) from R(x).
v is the value of R at x,
v(1:end-1)/v(end) is the value of r at x.
If, in addition,
dv is DR(x),
(dv(1:end-1)-dv(end)*v(1:end-1))/v(end) is Dr(x).
More generally, by Leibniz's formula,
This shows that you can compute the derivatives of r inductively,
using the derivatives of s and w (i.e.,
the derivatives of R) along with the derivatives
of r of order less than j to
compute the jth derivative of r.
This inductive scheme is used in
fntlr to provide
the first so many derivatives of a rational spline. There is a corresponding
formula for partial and directional derivatives for multivariate rational