# CS 284: CAGD  Lecture #6 -- Wed 9/16, 2009.

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

## Discussion of Homework Assignment:

What are good heuristics for the tangent directions and the two velocities ?
• Not as easy as it first seems -- everybod showed good effort, -- not everybody succeeded completely, -- several of you did a great investigation!
• First crucial step is to get the tangent direction right.
• Line parallel to P0 - P2 does not lead to great solutions, but it can maintain affine invariance.
• Using a tangent perpendicular to the angle-bisector in the control polygon, gives better results.
• For even better results, some more weight should be given to the shorter segment to define tangent direction;
• it is an open-ended question how this should be done for the very best, most robust results ...
(perhaps divide the turning angle between the control polygon segments proportional to the ratio of the segment lengths).
• For G1-continuity the Bezier control points adjacent to the joint need to lie both on this tangent line.
• They can be at un-equal distances; C1-continuity does NOT lead to better looking shapes, it just adds one more constraint!
• The distances should be scaled (somewhat) with the length of the underlying control segment.
• The construction should be structurally symmetrical, i.e., use essentially the same formula for both inner control points.

# Topic: Space-Curves and Sweeps

## Differential Geometry of 3D Curves  (Handout from Ch5, M. E. Mortenson, "Geometric Modeling", John Wiley & Sons, NYC, 1985)

### Analysis of Curves (as compared to "Design" or "Data Fitting")

• Intrinsic Curve Properties (defined at each local point on the curve)
• - - Vectors: Tangent, Normal, Binormal;
• - - Planes: Osculating, Normal, Rectifying;
• - - Scalars: Curvature, Torsion.
• Extrinsic Curve Properties (overall, global values)
• - - Arc-length;
• - - Planarity, Linearity;
• - - Closedness, Turning Number (in 2D), Knot Type (in 3D);
• - - Highest polynomial degree, lowest continuity type, # of inflection points.

### Construction of the Frenet Frame (Ref. frame for intrinsic properties)

• Finding the Tangent -- velocity -- p'(t) -- normalize ...
• Normal Plane -- from acceleration = change of velocity -- p''(t) -- twp components:
• in line with tangent = true acceleration.
• perpendicular to tangent = turning. ==> Defines principal normal -- points in the direction that curve bends.
• Osculating Plane -- spanned by tangent and principal normal vectors;  = best-fitting plane.
• Osculating Circle -- best-fitting circle in that plane; -- defines curvature:  k = 1/r
• Binormal -- perpendicular on osculating plane; -- axis around which tangent vector turns.
• Difference between principal normal and second derivative.
• The three coordinate planes and their relations to the 3 vectors.

### Serret - Frenet Relations

• What is Curvature ? -- rate of rotation around B (1/r of the osculating circle)
• What is Torsion ? -- rate of rotation of osculating plane (around tangent)
• Inflection points -- where curvature = 0.
• Which unit vectors serve as local rotation axis ?  (==> see above)
• Which unit vectors could best serve as graphical indicators (along curve) ?
• for curvature: use -n; {n would crowd the inside of the bend} ==> "hedgehog" curves.
• for torsion: use B; { allows both signs; t would crowd the tangent vector}.

## Sweeps along Piecewise Linearly Approximated Curves

Examples of mitered joints (by Koos Verhoeff): 1 2 3 4
Default:  Keep cross-section of constant geometry and always perpendicular to tangent vector.
This can be achieved by constructing "ribs" in angle-divider plane at all segment junctions, stretching them by 1/cos(half-angle) in direction of normal vector.

## Current Homework Assignment:

Smooth Sweeps along Complex 3D Curves

Study the sweep manual pages on SLIDE !

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 two 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 ?   See 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).

ATTENTION: -- the "closed" flag does not seem to work when set dynamically:
closed {expr \$oSweep(closed)}
but will work when set explicitly in the SLIDE file, either as:
closed 0
or:
closed 1

Do this before WEDNESDAY, 9/16/2009 so you can ask questions and resolve issues for the remainder of this assignment.

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 ?
>>> Just discuss the issues you encounter in the 3D case. Find out what "hooks" are or are not available in the SLIDE sweep.
Briefly summarize what would have to be done to make nice prismatic sweeps along a composite Bezier curve in 3D,
and how the necessary information may be computed.
No need to actually do all the programming -- unless you want to.

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 ?
>>> Implement the sweep for the polyline case. The SLIDE machinery should handle all that.

DUE: Mon. 9/21/2009, 10:40pm.
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...)
>>> Without the implementation of (3), this will not work well in 3D.
But the 2D case is much simpler. You should be able to get nice results for the 2D case.

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 of text, answering the questions raised above.

## Next Reading Assignments: Blossoms, B-Splines

Study: Rockwood:  pp 76-83; pp 89-92 (basic labeling scheme for Blossoming)
Study: Rockwood:  pp 94-103 (basics of B-splines)

Skim: Rockwood:  pp 83-88 and 103-104 ( the more formalistic and programming aspects of Blossoming)

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