Graphics Reference
In-Depth Information
is subdivided into subintervals [t j ,t j+1 ] with the property that the cubic curve which
interpolates the four points p(g(t j )), p(g((2/3)t j + (1/3)t j+1 )), p(g((1/3)t j + (2/3)t j+1 )), and
p(g(t j+1 )) deviates from the chord [p(g(t j )), p(g(t j+1 ))] by an amount that is between
(1/2)e c and e c . The lower bound (1/2)e c is used to make sure that the polygonization
does not consist of too many small segments. Next, the surface is subdivided into a
grid of rectangular patches that are sufficiently flat using a modification of the algo-
rithm in [LanR80] and [Peter94]. Since p(u,v) was only assumed to be C 0 , one has no
curvature information and so the flatness test is based purely on the flatness of the
grid. Specifically, one checks how close corner vertices are to lying in a plane and how
flat the boundary curves are. While subdividing one also tags the rectangles with
respect to the polygonal trimming curves:
IN: The rectangle is in one loop and outside all inner loops.
OUT: The rectangle is out all outer loops or in one inner loop.
ON: The rectangle intersects a loop.
OVER: At least one loop is entirely inside the rectangle.
ONANDOVER: There are some loops that are inside the rectangles and some that
intersect it.
The OUT rectangles are discarded. See Figure 14.14(a). The tags OVER and
ONANDOVER are needed in the case where many small punctures are made in a
surface. A rather complicated algorithm now merges the trimming loops with the
subdivision rectangles. One has to handle many special cases. See Figure 14.14(b).
Finally, the polygonal regions are triangulated. See Figure 14.14(c).
Figure 14.14. The Piegl and Tiller algorithm (Piegl, L.A., et al. “Geometry-Based Trian-
gulation of Trimmed NURBS Surfaces,” CAD, 30 (1), January 1998, 11-18. By permission
of the publisher Elsevier).
Search WWH ::




Custom Search