CS 284: CAGD
Lecture #3 -- We 9/3, 2003.
PREVIOUS
< - - - - > CS
284 HOME < - - - - > CURRENT
< - - - - > NEXT
Preparation:
Read: RC pp 49-73.
Homework Discussion: What can you do with Bézier Curves?
-
What can we do with an eighth-order
Bezier curve (p52)?
-
What order is needed for a G1-smooth loop of turning number 3 ? -->
order
9.
-
What order is needed for a figure-8 shape with C2 point-symmetry ?
--> order
6.
Lecture Topics
Last lecture: An Intuitive Introduction to the Bezier Curve and Its Behavior.
This lecture: A Look at the Underlying Formalism and Construction.
Bernstein Basis Functions
-
Formula (p35)
-
Geometric View (p36)
de Casteljau Algorithm
-
How NOT to evaluate a Bezier curve
-
Finding
curve points by interpolation
-
Recursive linear interpolation (p46).
-
An efficient pipelining scheme, fast and robust!
-
Finding Tangent Directions
-
Subdivision
-
Finding the new control points.
-
Use of subdivision for clipping to a boundary.
-
Use of subdivision for curve refinement.
Working with Bézier Curves
-
Derivatives
-
Hodograph is just another Bezier curve;
-
its control points have the coordiantes of the original connecting segments.
-
Degree
Elevation
-
Choosing higher-order basis to obtain more control points,
-
e.g., in order to match degrees of adjacent Bezier patches.
-
The general formula for new control points;
-
think about redistributing the needed control points uniformaly along a
straight line.
-
Review of Continuity:
-
Individual segment is C1, but not always G1-continuous;
-
it may have cusps !
Stitching Bezier Curves Together
-
Aiming for more control over complicated curves.
-
High-order Bezier curve does not allow much real control.
-
Basis functions are to broad; affect all points of the curve.
-
Making Interpolating Curves from several Bezier segments.
-
Cubic Bezier segments for G1 or C1 continuity.
-
Quintic Bezier segments for G2 or C2 continuity.
-
Tangent
Continuity Conditions at the joints.
-
Curvature
Continuity Conditions at the joints.
-
Counting Degrees of Freedom (DoF)
-
Each control point in 2D has 2 DoF.
-
Each constraint imposed removes one DoF.
-
How many DoF are remaining ?
-
(3 for G1; 2 for C1)
-
How to use these DoF's ?
-
Optimize the curve !
-
Make it as pleasing as possible: --> See Programming Assignment #1.
-
Global Optimization (approximation)
-
Define a cost function:
-
E.g., Strain Energy = arc-length integral of square of curvature.
-
(Approximate this as best possible with Bezier segments).
Preview of Lagrange Interpolation
-
Another way to make a smooth interpolating curve.
-
The Goal: To interpolate all data (control) points with ONE function.
-
A Set of basis functions that will achieve this (p.61, eqn 4.2)
-
The concept of "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.
-
Effect of changing the knot values: Squeezing "more" of the curve between
some knot pair --> yields bigger bulge.
New Homework Assignment: G1-Stitching of Bezier Curves
In this first programming assignment you will be introduced (gently) to
SLIDE and to the Tcl language. Your actual programming will be less than
ten lines of code (most of the expressions you will need have already been
provided), but it encourages experimentation and thinking.
The goal is to learn how to stitch cubic Bezier segments together to
make a smooth, pleasing-looking, interpolating curve that behaves well
even for rather ragged control polygons with irregularly spaced control
points (like the example we did in class by hand).
Your assignment is to find a robust expression for the placement for
the inner control points of each Bezier segment, involving only information
from the nearest neighbor points, and which guarantees a G1-continuous
overall curve.
DUE: Sept. 10, 2003, 9:10am.
Hand in:
Window snapshot showing your best solution;
The formula you used to place the inner control points;
A one paragraph discussion of your approach, and what you learned from
it;
any other comments you would like to make.
On line:
Put your SLIDE file in the proper place {see instructional
page};
Set the initial values for the sliders to the preferred value,
so that when we execute your program, your best solution, the one
that you handed in, will show up.
The code that you should modify and execute, as well as additional instructions
on how to run SLIDE can be found in
http://www-inst.eecs.berkeley.edu/~cs284/FA00/pa1/pa1.htm
Next Reading Assignment:
Rockwood: pp 59-73 (Lagrange Interpolation)
PREVIOUS
< - - - - > CS
284 HOME < - - - - > CURRENT
< - - - - > NEXT
Page Editor: Carlo H. Séquin