The current NURBS implementation has no trimming facilities yet. The code is not well commented. 1) Normal calculus fails for special cases of NURBS (independent of the NURBS modules) Those cases arise when for u or v, some control points for a fixed value of that parameter form the same point. Imagine a Bezier patch degenerated into a "triangle". v ^ 0,1,2 order=3 | * | | 3* 4* 5* | | 6* 7* 8* | | +------------------------> u The calculus of du derivative at triple point (0,1 and 2) will fail. As a result, the normal vector will be 0. The eval2.c code has to be changed to handle the above situation. 2) Adjacent NURBS surfaces ("sharing" the same control points along the "joining" edge) will be sampled with the same factor. This prevents the formation of "cracks". When the control polygon of the "shared" edge is not the same, cracks might appear. The sampling tolerance is sometimes not respected! A NURBS object is broken into Bezier curves/surfaces. If one of such Bezier objects has a local high curvature with other portions of it relatively flat then the high curvature part will be sampled more dense that its flatter regions. The flat regions might be tesselated into quads having sides of length greater than the current sampling tolernace setting. I believe such behaviour is acceptable, though not along the concept of sampling tolerance. February 20, 1996. Bogdan.