Ringing Js refinements
Abstract
Both the four-point and the uniform cubic B-spline refinement (i.e. subdivision) schemes double the number of vertices of a closed-loop polygonal curve jP and respectively produce sequences of vertices fk and bk. The Js refinement proposed here produces vertices vk=(1-s)fk+sbk. Iterative applications of Js yield a family of curves parameterized by s. It includes the four-point curve (J0), the uniform cubic B-spline (J8/8), and the quintic B-spline (J12/8). Iterating Js converges to a C2 curve for 0[less than]s[less than]1, to a C3 curve for 1[less than or equal to]s[less than]3/2, and to a C4 curve for s=S3/2. J3/8 tends to reduce the error between consecutive refinements and is useful to reduce popping when switching levels-of-detail in multi-resolution rendering. J4/8 produces the Jarek curve, which, in 2D, encloses a surface area that is usually very close to the area enclosed by the original control polygon 0P. We propose model-dependent and model-independent optimizations for these parameter values. As other refinement schemes, the Js approach extends trivially to open curves, animations, and surfaces. To reduce memory requirements when evaluating the final refined curve, surface, or animation, we introduce a new evaluation technique, called Ringing. It requires a footprint of only 5 points per subdivision level for each curve and does not introduce any redundant calculations.