程序代写代做代考 scheme flex algorithm cse3431-lecture15-paramcurves

cse3431-lecture15-paramcurves

Curves and Surfaces

Curve Design

Representing curves
Explicit: y = f(x), z=g(x)
• Cannot get multiple values for single x, infinite slopes
• E.g. cannot represent a circle

Implicit (2D): f(x,y) = 0
• Cannot easily compare tangent vectors at joints
• Above/below test, normals from gradient

Parametric: x=fx(t), y = fy(t), z= fz(t)
• Often the most convenient formulation
• Tangent of curve (f(t),g(t),h(t)) is (f’(t), g’(t),h’(t)) where ’

indicates derivative wrt to t

Describing curves by means of
polynomials

Reminder:
Lth degre polynomial

Parametric and implicit forms are linear
x(t) = at +b
y(t) = ct +d
F(x,y) = kx + ly+m

Polynomial Curves of Degree 1

x

y(x)

t

y(t)

x(t)

Polynomial Curves of Degree 2
Parametric
x(t) = at2+2bt+c
y(t) = dt2+2et+f
t in R
For any choice of constants

a,d,c,d,e,f →parabola

Implicit
F(x,y) = Ax2+2Byx+Cy2+Dx+Ey+G
Let d = AC-B2
d > 0 → F(x,y) = 0 is an ellipse
d = 0 → F(x,y) = 0 is a parabola
d < 0 → F(x,y) = 0 is a hyperbola 1. Parabola 2. Circle and Ellipse 3. Hyperbola Courtesy of Pbroks13, Wikipedia http://commons.wikimedia.org/wiki/User:Pbroks13 Polynomial curves of degree 2 Common Vertex form: Rational Quadratic Parametric Curves w < 1 ellipse w = 1 parabola w > 1 hyperbola

Other kinds of curves
Sinusoidal
Exponential
Complex
Fractals

Differential Geometry Concepts
Tangent vector
• Given a parameterized curve 


p(t): τ(t) = p’(t) = dp(t)/dt

defines the forward orientation of the curve and the
parametric velocity

• Notice that it is a function of t and that it is a vector
• It defines locally (instantaneously) the shape of the

curve at each point and can be used for interactive
design tools

• Unit tangent: T(t) = τ(t) / ||τ(t)||

Differential Geometry Concepts
Normal vector (AKA curvature vector)
• Given the unit tangent vector T(t):

• 


• Indicates how far from a straight line the curve is

(Line has 0 curvature)

• Normal to the tangent vector T


e2(t) = p
00(t)� (p00(t) ·T(t))T(t)

N(t) =
e2(t)

||e2(t)|| N

T

Differential Geometry Concepts
Binormal
• Normal to both tangent and normal vectors
• In 3D: 


B = T ⊗ N

Frenet frame
The three vectors together form the Frenet
frame

Osculating plane
defined by N,T

Curve design in graphics and
animation

• In graphics we often want to interpolate or
approximate a set of values in an efficient and
predictable way

• We use parametric polynomials and constrain them to
create desired types of curves

Geometric approach

P0, …,PL→ → P(t)

Constraints Polynomial Curve

Parametric polynomial curve
design in graphics

Curve
generation

Any t

Interpolation vs
Approximation

P0

P3

P1

P2

P0

P1

P2

P4

P5

P6

Geometric approach

P0, …,PL→ → P(t)

Constraints Polynomial Curve

Pi control points

P0 …PL control polygon

Parametric polynomial curve
design in graphics

Curve
generation

Any t

Interpolation vs
Approximation

P0

P3

P1

P2

P0

P1

P2

P4

P5

P6

Tweening
Two points=line

A(t) = (1-t)P0 + tP1

De Casteljau Algorithm

P0

P1

A(t)

Tweening
Three points

A(t) = (1-t)P0 + tP1
B(t) = (1-t)P1 + tP2

De Casteljau Algorithm

P0

P1
P2

A(t)

B(t)

Tweening
Three points
(parabola)

A(t) = (1-t)P0 + tP1
B(t) = (1-t)P1 + tP2
P(t) = (1-t) A(t) + tB(t) = (1-t)2P0 +2t(1-t)P1+t2P2

De Casteljau Algorithm

A(t)

B(t)

P(t)

P0

P1
P2

Tweening
Three points
(parabola)

A(t) = (1-t)P0 + tP1
B(t) = (1-t)P1 + tP2
P(t) = (1-t) A(t) + tB(t) = (1-t)2P0 +2t(1-t)P1+t2P2

De Casteljau Algorithm

A(t)

B(t)

P(t)

P0

P1
P2

De Calsteljau (cont)
Tweening with four points

P(t) = (1-t)3P0+3(1-t)2tP1+3(1-t)t2P2+t3P3

P0

P1
P2

A(t)

B(t)

P(t)
P3

One of the most fundamental concepts in
curve design

P(t) = (1-t)3P0+3(1-t)2tP1+3(1-t)t2P2+t3P3

Bezier Curves

P0

P1
P2

P(t)
P3

Visualization
• Courtesy of Phil Tregoning, Wikipedia

Coefficients of Bezier Curves:
Berstein polynomials

P(t) = (1-t)3P0+3(1-t)2tP1+3(1-t)t2P2+t3P3
B30 (t) = (1- t)3

B31 (t) = 3(1- t)2t

B32 (t) = 3(1-t)t2

B33 (t) = t3

Expansion of [(1- t) + t]3 = (1- t)3 +3(1- t)2t + 3(1- t)t2 +t3 →
Σ B3k (t) = 1, k = 0,1,2,3

Affine combination of points

L + 1 control points, Pk

Expansion of [(1-t) + t]L

Berstein Polynomials of L
degree

P (t) =
LX

k=0

BLk (t)Pk where

BLk (t) =


L
K


(1� t)L�ktk


L
K


=

L!

k!(L� k)!
, for L � k

A�ne combination:
LX

k=0

BLk (t) = 1, for all t

Other Berstein Polynomials
Properties

Allways positive
Zero only at t =0 or 1

Degree 3

Properties of Bezier curves
• End point interpolation
• Affine Invariance:
• Invariance under affine transformation of the

parameter
• Convex Hull property


for t in [0,1]
• Linear precision by collapsing convex hull
• Variation Diminishing property: No straight line cuts

the curve more times than it cuts the control polygon

Derivatives of Bezier curves
It can be shown that:
Any derivative also a Bezier curve of lower degree

Which degree is best?
Cubic curves
• Lower order not enough flexibility
• Higher order too many wiggles and computationally

expensive
• Cubic curves are lowest degree polynomial curves

that are not planar in 3D

More complex curves
• Piecewise cubics

The general case for Cubic
Parametric Curves (piece)

• Bezier Cubic Curves are only one possible family of
cubic curves.

• We want more control of the constraints on the curves
– location
– shape

General form of Cubic
parametric curves

Matrix Form

Derivative of Cubic Parametric
Curves – tangent vector

Where the curve goes for 

some t

How the curve is shaped
for some t

For a given set of constraints we get a family
of curves

Constraints
Endpoints and a tangent at midpoint

Setting up the curve
Constraints

Solving for A
Constraints

Final form
Basis matrix

For the example

Blending functions
T*M

For the example

Each blending function 

weights the contribution
of one of the constraints

Hermite Curves
Constraints
Two points and two tangents

Hermite Curves
Blending functions

What does the magnitude of the
tangent do?

Interactive demo

Bezier Curves
Special case of Hermite
curves

Bezier Curves
Special case of Hermite
curves

Bezier Curves
Special case of Hermite
curves

Bezier Curves
Special case of Hermite
curves

Transforming between
representations

Just like Bezier and Hermite curves can be
transformed into each other with a matrix
multiplication, other families of curves can
do so as well

Bezier to Interpolating curves
• Curve must interpolate


Pi0,Pi1,Pi2,Pi3

Pi0

Pi3
Pi1 Pi2

Bezier to Interpolating curves
• Curve must interpolate


Pi0,Pi1,Pi2,Pi3
• How can we find the

Bezier points Pb from the
Pis so that the resulting
Bezier curve interpolates
the Pi points?

Pi0

Pb1
Pb2

Pi3
Pi1 Pi2

Bezier to Interpolating curves
For the next three slides
points are row vectors!!

Pb1
Pb2

Pi1 Pi2

Pi0

Pi3

Bezier to Interpolating curves

Pb1
Pb2

Pi1 Pi2

Pi0

Pi3

Bezier to Interpolating curves

Pi0

Pb1
Pb2

Pi3
Pi1 Pi2

Piecewise cubic curves

Connection?

C1

C2

C3

Continuity
Geometric Gk-continuity
P(i)(t-) = ciP(i)(t+) ∀t in [a,b]

for i = 0,…,k and
for some ci positive

constants

(P(i) is the i-th derivative)

Parametric Ck-continuity
P(i) exists and is continuous ∀t

in [a,b], for i = 0,…,k
Terminology:
P is k-smooth
P has kth-order continuity

Is a Ck-continuous function GK continuous as well?

Examples
C1

C2

C3

C1
C2

C3

Piecewise Cubic Hermite Curves

What are the conditions for G1 continuity?

Piecewise Cubic Hermite Curves

R’1 = kR4

P1’= P4

Catmull-Rom splines

Fit a piece wise cubic curve to the points
• Pi, i = 0,1,…,n-1

P0

P1xt

Pn-1xt
P2xt

Catmull-Rom splines

Fit a piece wise hermite curve to the points
• Pi, i = 0,1,…,n-1

Second order accurate tangents
• Ti = (Pi+1 – Pi-1)/2.0 for i = 1,…,n-2
• T0 = 2(P1 – P0) – (P2-P0)/2, similarly for Tn-1

P0

P1xt

Pn-1xt
P2xt

Uniform BSplines

Matrix form
For a bspline curve with:
• m+1 control points P0, …, Pm
• m-2 segments Q3,…, Qm
• t in [3,…,m]

Properties
C2 continuous
Convex hull property
NO invariace under perspective projection!

NURBS: Nonuniform Rational B-
splines

X(t) = X(t) / W(t)
Y(t) = Y(t) / W(t)
Z(t) = Z(t) / W(t)
• Exact conic sections
• Invariance under perspective projection

Summary: General problem

P0, …,PL→ → P(t)Curve generation

P (t) =
3X

i=0

Bi(t)Pi, t 2 [a, b], a, b 2 < where Bi(t) : Blending functions Pi, i = 1, · · · , L : Control Points Blending functions Weight the influence of each constraint (e.g. control point) on the curve created. B1 B2 B3 t Wish list for blending functions • Easy to compute and stable • Sum to unity for every t in [a,b] • Support over portion of [a,b] • Interpolate certain control points • Sufficient smoothness P (t) = LX k=0 BLk (t)Pk where BLk (t) = ✓ L K ◆ (1� t)L�ktk ✓ L K ◆ = L! k!(L� k)! , for L � k A�ne combination: LX k=0 BLk (t) = 1, for all t Example: Bezier curves • Sum up to unity • Smooth • Interpolate first and last • Expensive to compute for large L • No local control Rendering parametric curves Transform into primitives we know how to handle • Line segments Single cubic segment C(t): t in [0,1] C(0) C(1) Converting to Lines Straightforward Uniform subdivision Evaluate C(t) at n points spaced by dt=1/(n-1) C(0), C(dt), C(2dt),…,C((n-1)*dt=1) Draw as lines C(0) C(1) C(0) C(dt) C(2dt) Converting to Lines Straightforward Uniform subdivision Evaluate C(t) at n points spaced by dt=1/(n-1) C(0), C(dt), C(2dt),…,C((n-1)*dt=1) Here n = 2 and dt = 1/(n-1) = 1 C(0*dt = 0) C((n-1)*dt=1) Two points Converting to Lines Straightforward Uniform subdivision Evaluate C(t) at n points spaced by dt=1/(n-1) C(0), C(dt), C(2dt),…,C((n-1)*dt=1) Here n = 3 and dt = 1/(n-1)= 0.5 C(0*dt = 0) C((n-1)*dt=1) Three points C(1*dt = 0.5) Converting to Lines Straightforward Uniform subdivision Evaluate C(t) at n points spaced by dt=1/(n-1) C(0), C(dt), C(2dt),…,C((n-1)*dt=1) Here n = 4 and dt = 1/(n-1) = 0.33 Four points C(0) C((n-1)*dt=1) C(0.66) C(0.33) Converting to Lines Straightforward Uniform subdivision Evaluate C(t) at n points spaced by dt=1/(n-1) C(0), C(dt), C(2dt),…,C((n-1)*dt=1) All together for comparison Many points Three points Four points C(0) C((n-1)*dt=1) C(dt) C(2dt) Two points How many evaluation points are enough for Bezier curves? Not too few Not too many Ok, how many? Subdivision schemes Uniform Non-uniform • Adaptive Error metrics that define how much information we are losing An example... Adaptive Subdivision of Bezier Curves de Casteljau subdivision One Bezier curve becomes 2 flatter curves Original points 1,2,3,4 à Midpoints 12, 23, 34 Midpoints of midpoints: 123, 234 Midpoints of midpoints of midpoints, 1234 Remember: tweening for t = 0.5 Can chose any t we want Ok, how many times do we subdivide? Images courtesy of 
 Maxim Shemanarev Error metrics Examples: Point distance Tangent distance Images courtesy of 
 Maxim Shemanarev