The Nurbs class. It implements a nurbs curve for the given order. It is a very powerful and flexible curve representation. For simpler cases you may prefer to use a Bezier curve.
While non-rational curves are not sufficient to represent a circle, this is one of many sets of NURBS control points for an almost uniformly parameterized circle:
x | y | weight |
---|---|---|
1 | 0 | 1 |
1 | 1 | sqrt(2)/2 |
0 | 1 | 1 |
-1 | 1 | sqrt(2)/2 |
-1 | 0 | 1 |
-1 | -1 | sqrt(2)/2 |
0 | -1 | 1 |
1 | -1 | sqrt(2)/2 |
1 | 0 | 1 |
The order is three, the knot vector is {0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4}. It should be noted that the circle is composed of four quarter circles, tied together with double knots. Although double knots in a third order NURBS curve would normally result in loss of continuity in the first derivative, the control points are positioned in such a way that the first derivative is continuous. (From Wikipedia )
Example:
Nurbs<3> circle; circle.insert_control_point(0, Vertex(1., 0.), 1.); circle.insert_control_point(0, Vertex(1., 1.), sqrt(2.)/2.); ...
Create a new Nurbs curve.
Inserts a control point with the given weight.
Create a new Nurbs curve.
Inserts a control point with the given weight. The knot value determines the position in the sequence.
knot: | the parameter value at which to insert a new knot |
---|---|
vertex: | the control point |
weight: | the weight of the control point |