NonUniform Rational B-splines (NURBS)

Recall, that the B-spline is weighted sum of its control points
    P(t) = ∑i=0,n Ni,k(t) Pi ,     tk-1 ≤ t ≤ tn+1       (*)
and the weights Ni,k have the "partition of unity" property
    i=0,n Ni,k(t) = 1 .
As weights Ni,k depend on the knot vector only, it is useful to add to every control point one more weight wi which can be set independently
    P(t) = ∑i=0,n wi Ni,k(t) Pi / ∑i=0,n wi Ni,k(t) .       (**)
Then increasing a weight wi makes the point more influence and attracts the curve to it. The denominator in (**) normalizes weights, so we will get the equation (*) if we set wi = const for all i. Full weights wi Ni,k (t) / ∑m=0,n wm Nm,k(t) satisfy the "partition of unity" condition again. They are ploted to the right below.

Interactive NURBS   Use finger or mouse to move a nearest control point (a small blue square in the left window) or change a weight 0 < wi < 5 (a small black square in the right window).

Perspective projection

Formula (**) has a simple interpretation by perspective projection from 4D space (x, y, z, w). The perspective projection from three dimensions (x, y, w) to two dimensions (the plane R2) is illustrated in Fig.1. A 3D point A is projected along a straight line through the origin to the point of intersection with the plane R2. This is essentially the same process as projecting a 3D object onto a 2D screen with perspective camera. You see in Fig.2, that perspective projection c of a point C = (A+B)/2 is really attracted to b with respect to c' projection of C' = (A+B')/2, for Bw > Aw and B'w < Aw .
projection weights
As since perspective projection of a 4D point (x, y, z, w) has coordinate (x/w, y/w, z/w), therefore formula (**) is the perspective projection of 4D equation
    P w(t) = ∑i=0,n Ni,k(t) Piw ,
where Piw is a 4D vector with the components (wi xi , wi yi , wi zi , wi ) . The perspective projection of Piw is evidently the control point Pi .

4D representation of NURBS is very useful, as since all B-spline's properties are "projected" into rational spline's ones.

There are two different conventions for representing the control points in terms of their 4D coordinates (x,y,z,w):
Homogeneous, in which the coordinates represent the point's position in 4D space. Thus the point's 3D position is (x/w, y/w, z/w).
Weighted Euclidean, in which the coordinates are already considered to have been divided through. Thus the first tree components (x,y,z) directly represent the point's position in 3D space and the fourth w represents its weight.
Weighted Euclidean coordinates are used in interactive nurbs.js applet.

Conic sections

Conic section is an intersection of a cone with a plane. The angle at which the plane intersects the cone determines whether the resulting curve is a circle, ellipse, parabola or hyperbola. Conic curves are represented here using quadratic NURBS (n=2, k=3) with the open uniform knots [0 0 0 1 1 1]: parabola (w1 = 1), hyperbola (w1 = 4) and ellipse (w1 = 1/4).
w1 = 1
w1 = 4
w1 = 1/4

Circular arcs

arc The following method can be used to construct a circular arc of quadratic NURBS:
  • The legs of the control triangle are of equal length (i.e. it is isosceles).
  • The chord connecting the first and the last control points meets each leg at an angle φ equal to half the angular extent of the arc.
  • The weight of the inner control point is cos(φ ).
  • The open uniform knot vector is [0,0,0,1,1,1].
You see below how to get a hole circle with only one NURBS. The knot vectors are [0, 0, 0, 1/3, 1/3, 2/3, 2/3, 1, 1, 1] and [0, 0, 0, 1/4, 1/4, 1/2, 1/2, 3/4, 3/4, 1, 1, 1].

Contents   Previous: Interpolating cubic B-splines   Next: Tensor product spline surfaces
updated 23 August 2001