| 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. |