Next: , Previous: Geometry, Up: Future Plans


40.2 Curves and Surfaces

3D modelling software usually supports the creation and manipulation of various kinds of spline curves: Bézier curves, B-splines, and non-uniform rational B-splines or NURBS. These curves can be used for generating surfaces.1

paths in Metafont and MetaPost are Bézier curves. It would be possible to implement three-dimensional Bézier curves in 3DLDF, but unfortunately they are not projectively invariant:

Let c_0 represent a Bézier curve in three dimensions, P the control points of c_0, and t a projection transformation. Further, let Q represent the points generated from applying t to P, and c_1 the curve generated from Q. Finally, let R represent the points generated from applying t to all of the points on c_0, and c_2 the curve through R: c_1 \not\equiv c_2.

NURBS, on the other hand, are projectively invariant,2 so I will probably concentrate on implementing them. On the other hand, it would be nice to be able to implement Metafont's way of specifying paths using `curl', `tension', and `dir' in 3DLDF. This may prove to be difficult or impossible. I do not yet know whether Metafont's path creation algorithm can be generalized to three dimensions.3

Curves and surfaces are advanced topics, so it may be a while before I implement them in 3DLDF.


Footnotes

[1] Huw Jones, Computer Graphics through Key Mathematics, and David Salomon, Computer Graphics and Geometric Modeling, are my main sources of information about spline curves.

[2] Jones, Huw. Computer Graphics through Key Mathematics, p. 282.

[3] Knuth, Donald Ervin. The METAFONTbook, p. 130, and Hobby, John D. Smooth, Easy to Compute Interpolating Splines. Discrete and Computational Geometery 1(2).