POV-Ray : Newsgroups : povray.off-topic : Splines : Splines Server Time
3 Sep 2024 23:29:53 EDT (-0400)
  Splines  
From: Invisible
Date: 30 Jun 2010 05:13:48
Message: <4c2b0acc$1@news.povray.org>
I am attempting to comprehend NURBS.

NURBS are of course Non-Uniform Rational B-Splines.


using de Casteljau's algorithm:

   Plot(T, P[])
     If P[] contains just one point, return it. Otherwise...
     Construct Q[] by linearly interpolating between each adjacent pair 
of points in P[], at parameter=T.
     Recursively call Plot(T, Q[]).

Since Q[] is exactly one element smaller than P[], eventually the 
recursion terminates. (And in practice, the initial set of constrol 
points is something like 3 or so.)


control points to generate a new, smaller set of control points. Repeat 
until you have a single point left.


except that each control point has a "weight". What the algorithm 
appears to do is draw the spline in 3D and then perspective-project it 
back into 2D. The control points are positioned so that their apparent 
2D position is unaltered, but the Z coordinate is the weight. Changing 
the weight doesn't alter the apparent position of the control point, but 
does alter the way the rest of the curve projects back into 2D. (In 
particular, a negative weight puts the control point behind the camera.)


has a "knot vector" which controls how much of the curve is influenced 
by a specific control point. A B-spline can be "uniform" (all knots 
equally spaced) or "non-uniform" (knot spacing is unequal).

This much I understand. What I don't yet understand is the fine detail 
of how B-splines actually work.

A NURBS is simply a B-spline which is (potentially) non-uniform (i.e., 
the knots are adjustable) and rational (i.e., it uses this strange 3D 
projection trick). So if I could just understand B-splines, I would be 
able to comprehend NURBS.

The degree of a B-spline, the number of control points and the number of 
knots are all related in some way which I don't quite understand. The 
degree and the knots generate the basis functions, and the curve itself 
is just a linear combination of the basis functions multiplied by the 
control points. So if I could just figure this last part out...


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.