# CS 284: CAGD  Lecture #5 -- Tu 9/12, 2006.

PREVIOUS < - - - - > CS 284 HOME < - - - - > CURRENT < - - - - > NEXT

## Preparation:

Read:  Rockwood: pp 59-73 (Lagrange Interpolation)  and  pp 93-97; 108-112 (B-Splines)

# Main Lecture Topic

## More on how to make interesting, complex, smooth curves that interpolate given points.

Last lectures: How to use Bezier curve segments and Hermite Splines, properly stitched together, to make an interpolating spline.
This lecture: More on Lagrange Interpolation.

## Lagrange Interpolation

• Yet another way to make a smooth interpolating curve.
• In this approach, all data (control) points are interpolated with ONE function.
• A set of basis functions that will achieve this:
• (p.61, eqn 4.2)
• An important new concept: "knots" {here: t-values at control points}
• i.e., at what "time" do we pass the given points.
• Example of the Cubic Lagrange Basis with uniform knots (p.62)
• Effect of changing the knot values
• experiment with applet (p.65) ...
• squeezing "more" of  the curve between some knot pair --> yields bigger bulge.

### Lagrange Basis Functions Compared with Bernstein (p.62)

• Interpolation of ALL points
• NO tangent conditions
• Preserves affine invariance
• Convex hull does NOT apply (overshoots !)
• Preserves linear precision
• NOT variation diminishing
• look at a case with "extra wiggles"
• Maintains end-to-end symmetry, if knot intervals are symmetrical, too.

## Circle Splines

Curves that are not subject to the "Linear-Precision Collapse"

## Three Ways to Make Surfaces: NURBS patches, Subdivision Surfaces, Sweeps (homework)!

"Fair, G2- and C2-Continuous Circle Splines," by C. H. Séquin, Kiha Lee, and Jane Yen.

## Next Homework Assignment: (to be done individually)

Sweeps are an easy way to make water-tight surfaces and thus define the B-rep of a solid.
An amazing variety of shapes can be generated with just a few basic constructs !
Examples how I used sweeps:

Smooth Sweeps along Complex 3D Curves

1. Implement smooth curve interpolation in 3D.
- - Start from the file http://www.cs.berkeley.edu/~sequin/CS284/CODE/pa2.slf
- - Write the corresponding formulae for the z-components of the inner Bezier control points.
- - Add the necessary z-expressions in all places where I have not already done so.
- - I have added a "Z-scale" slider that multiplies all the new z-coordinates with a slider-controlled constant,
so that you can readily go back and forth between 2D (multiplier=0.0) and 3D (multiplier=1.0).
- - Lift the data points out of the x-y-plane, and convince yourself that everything still "works smoothly."

2. Use the SLIDE "sweep" construct to form a small ribbon going along a closed B-spline curve approximating the original 15 control points.
- - This can be done by sweeping a "star" type cross section, and giving the star 2 skinny spokes.
- - I have already put in most of the needed code; if you turn on "drawSweep" in the "slf_swp" slider menu,
you should see such a ribbon in red, displayed edge-on.
- - However, the ribbon seems to have 10 pinched-off, twisted points in its loop; WHY is this ? -- Write down your thoughts.
- - Under what conditions do you get a nice "prismatic" sweep with no funny points ?
- - How do you have to set parameters such as : "minimizeTorsion" "closed (curve)" "symmetry" "azimuth" ...
in order to achieve a nice result ?
(It is advisable to consult the manual pages on SLIDE ...)
- - Now lift the original control points out of the x-y-plane by increasing the "Z-scale" slider at the bottom of the "slf_bez" slider menu..
- - How is the behavior of the sweep different now ?
- - Pay particular attention to the end condition where the loop closes; under what circumstances do you get a smooth, seamless closure ?
- - Answer the same questions also for a 5-pointed star (set "Spokes" to 5).

3. Now try to make such a nice sweep along your own smooth, composite, interpolating curve.
- - It is somewhat tedious, since you have to specify a separate sweep construct for each of the 15 Bezier segments.
- - But again, the code is already in place, and you can see such a ribbon in green, if you turn on "drawSweep" in the "slf_bez" menu.
- - You may now want to turn off the B-spline at this time, so that you can focus on the Bezier segments.
- - For a 2D curve, as long as the ribbon is perpendicular to the curve's plane, everything should work fairly nicely.
- - But there may be problems in 3D. -- WHY ? What can you do about them ?

4. Now use all the originally given points, as well as your own calculated control points,
to make a closed polyline with 45 joints, and then sweep a 5-pointed star along that polyline.
- - The code for this is right next to the B-spline "backbone" code (near line 467 in pa2.slf).
- - Under what conditions do you get nice prismatic beams with nicely mitered joints ?
- - How do you have to set parameters such as : "minimize Torsion" "closed (curve)" "symmetry" "azimuth" ...
in order to achieve a nice result ?
- - Can the "twist" parameter be of any use in achieving nice, properly mitred joints ? HOW ?

DUE: Tue. 9/19/2006, 2:10pm.
Set the initial values for the sliders to the proper values, so that when your program is run,
one will see a nice "prismatic" sweep of a 3-pointed star along your best composite Bezier curve.
(You may want to change some of the parameters from the values that you gave them in pa1.)

• E-mail me a copy of your final modified pa2.slf SLIDE file.

Capture a hardcopy print-out of this sweep.

Hand in at the beginning of class:

• A hardcopy print-out of your sweep;
• and a page or two of text, answering the questions raised above.

PREVIOUS < - - - - > CS 284 HOME < - - - - > CURRENT < - - - - > NEXT
Page Editor: Carlo H. Séquin