Hierarchical B-Splines
Josh Taylor's CS779 Webpage
| 
The purpose of this project is to implement Hierarchical B-Splines. The use of a Hierarchical B-Splines (HBS) is local refinement, the ability 
to manipulate an area on a surface in such a way that you can contain or control the area affected.
 A HBS starts as a simple B-Spline Tensor Product Patch. The local refinement property is obtained using overlays, a refined B-Spline Tensor Product Patch. The surfaces are stored relative to one another creating a Hierarchy.  | 
  

An overlay on an overlay, note the decreasing patch size
| Refinement limits the area of effect of curve manipulations. The more refined a curve is the more local the changes and the sharper the peaks that can be created, as shown in the image below. We start with a (N x N) blank patch (I use 6x6 for simplicity, but the editor can handle any N), Overlays are placed through menu commands and positioned using the keyboard. When an overlay is placed on the desired section of curve, you commit it and its derived coordinates are determined by its parent surface. | 

3 peaks at increasing 
refinement (sharper peaks are more refined)
| Offset referencing is used to prevent tears in the curves and to maintain the hierarchy of overlays. When a curve is edited, all its overlays must move accordingly. In the screen shots below, I created a sharp peak, then I edited the base curve and the peak moved accordingly without a tearing in the surface. Editing is done using control points | 

a sharp peak

The peak after editing the root surface
| 
	Josh Taylor  Graduate Student (SCG) University of Waterloo jktylr@hotmail.com  |