CAGD: Design of curves, Splines & NURBS
Download
Report
Transcript CAGD: Design of curves, Splines & NURBS
CAGD:
Design of curves
Splines & NURBS
Alexander Lauser
Ferienakademie Sarntal 2004
Agenda
Motivation
Polynomial Interpolation
Bézier curves
Splines
Smoothness
B-Splines
Rational Bézier curves
NURBS
Why designing curves?
Many technological applications
Design of products (e.g. CAD)
Calculation of the path for a robot
Design of fonts
Large sized fonts must be smooth
Interpolating measuring data
Approximating measuring data
Criterias for curves
Controllability
Locality
Changes must be predictable in effect
Intuitive to use for the designer
Local changes should stay local
Smoothness
No sharp bends
Polynomial interpolation
Several conditions (say n+1)
For example: n+1 Points
n
n 1
a1 x a0
Apply to y an x an 1 x
Solve system of linear equations
Either effective or if you like to, even
efficent
Result: Polynomial of degree n
Interpolates points by construction (i.e. the curve
goes through these points)
Polynomial interpolation
Disadvantages
Very bad locality
Bad controllability
Tend to oscillate
Small changes may result in catastrophe
All you know is, that it interpolates the points
High effort to evaluate curve
Imagine a curve with several million given points
Approximation
Unlike interpolation the points are not
necessarily interpolated
Points give a means for controlling of
where the curve goes
Often used when creating the design of
new (i.e. non-existing) things
No strict shape is given
Bézier curves
Bézier curve
Now we are no longer interested in
interpolating all points
The curve only approximates a set of
points
Bézier curves are a simple, yet good
method
Given: n+1 control points b0 , , bn
Bézier – definition
n
Bi t
Bni t
Via Bernstein polynomials of
degree n
n
i
1 t
0,i 0,
n i
n ,t
i
t , i 0,
n ,t
0, 1
0,1
Characteristics
Nonnegative
Sum to union
Bernstein polynomials of degree 4
n
n
Bi t
i 0
1,
t
Bézier – mathematical
Definition of Bézier curve:
n
n
x t :
bi B i t
with t
0,1
i 0
Bernstein polynomials are like „crossfaders“ to the points
They are the weights in a weighted
linear combination
Bézier – derivation
d n
Bi t
dt
Derivation of Bernstein polynomial
d n
dt i
n
i
1 t
it
i 1
n i
1 t
n i
n!
ti
i 1 ! n i !
n
ti
1
n 1!
ti
i 1 ! n i !
n Bin
1
1
t
Bin
1
t
i
n i t 1 t
1 t
1
n i
1 t
n i 1
product rule
n!
ti 1 t
i! n i 1 !
n i
n i 1
n 1 !
ti 1 t
i! n i 1 !
n i 1
Bézier – derivation
d
x t
dt
Derivation of Bézier
d
dt
n
n
n
i
bi B t
i 0
i
n
n
n 1
1
n
b i Bi
n 1
i 1
t
n 1
n
i 1
bi Bi
t
with B
n 1
1
n 1
n 1
bi 1 Bi
t
n 1
n
i 0
b i Bi
t
Indexshift
i 0
n 1
bi
i 0
n 1
Bi
t
i 0
i 0
n 1
n
t
n 1
bi B
n
n
d n
bi Bi t
dt
0
n 1
1
bi Bi
t
Joined sums
t
n 1
0 Bn
t
0
Bézier – construction
Repeated linear interpolation
P1
0,5
0,5
0,5
P2
0,5
P0
t = 0,5
P3
Bézier – characteristics
Good controllability
Interpolates endpoints (s(0) = b0, s(1) = b1)
First two points determine the tangent vector at
the start: x 0 n b1 b0
Last two points determine the tangent vector at
the end: x 1 n b b
n
n 1
Good locality
Local changes only have local impact
Anyway changes are global
Bézier – characteristics
Lies within the convex closure of the control
points
Invariant under affine transformation
Useful for collision detection
You can rotate, translate and scale the control
polygon
Complex shape of model implies a great
amount of control points
This means the degree of the curve is high
So the evaluation of such a curve is slow
Splines
Modelling segmental
Splines
Piecewise polynomial segments
Modelling the curve locally by a segment
The segments are joined to get the global curve
Name derives from shipbuilding
Splines are stripes of metal fixed at several points.
They have the same smoothness as cubic B-Splines
Global parameter u and for each segment si a
local parameter t
Splines – parametrisation
Globally parametrised over a sequence
of nodes ui
Each segment si is locally parametrised
over [ui, ui+1]
Splines – parametrisation
Uniform splines
Nonuniform splines
Uniformly distributed sequence over range
of global parameter u
Sequence is not uniformly distributed
Segments si „live“ over [ui, ui+1] with
local parameter
t = (u – ui) / (ui+1 – ui–1)
Splines – smoothness
What does smoothness
mean?
Graphically clear: No
sharp bends
Mathematical abstraction: Order of
continuous derivability
Only nodes and the corresponding knotpoints are relevant
others points are infinitely often derivable
Splines – smoothness
C0-continuity
C1-continuity
The segments meet at the nodes
Curve must be continuously derivable after the
global parameter u one time
The „speed“ in respect to global parameter must
be the same in the joint both segments
C2-continuity
Curve must be continuously derivable 2 times
The „acceleration“ must be equal in the joint
Splines – smoothness
C1-continuous Spline
C0-continuous Spline
Splines – smoothness
Geometric smoothness: G1-continuity
In every joint there exists a unique
tangent
I.e. tangent vectors need not be equal in
magnitude, only direction
Doesn‘t take global parametrisation into
account
Splines – smoothness
An example for G1-continuous curve
that is not C1-continuous
1
u0
2
u1
1
u2
1
Splines – smoothness
In general
Cx-continuity Gx-continuity
But not: Gx-Continuity Cx-continuity
Special case: Stationary point
All derivations are zero
Then Cx-continuity Gx-continuity doesn‘t
hold
Splines – smoothness
Linear Interpolation
Why not interpolate the
points linearily?
It is very controllable
It is very local since it changes
only 2 segments
Right. BUT
It is not very smooth
It is only C0-continuous
P2
P1
P4
P3
B-Splines
Spline consisting of Bézier curves
Depending on the degree n of the
Bézier segments various orders of
continuity possible
In general up to Cn–1-continuouity
possible
Bézier: Tangents
B-Splines – C1-continuity
C1-continuity at knot bi
Tangent vectors must be equal
Bézier: Tangent vectors in bi
s0 - points from bi-1 to bi
s1 - points from bi to bi+1
This means bi-1, bi and bi+1 must be
collinear
bi-1
bi+1
bi
s0
s1
B-Spline: Collinearity of bi-1, bi and bi+1
B-Splines – C1-continuity
But this alone isn‘t sufficient
bi bi
bi
1
Furthermore bi-1, bi and bi+1 must satisfy a
specific ratio
1
u1 u0
bi
u2 u 1
=:
0
1
u0
bi bi
bi
1
1
bi
1
(for uniform B-Splines)
1
Why this?
u1
u2
B-Splines – C1-continuity
Because we are interested in derivability for
the global parameter
d
s u
du
Collinearity says that the „speed“ has the same
direction, but not necessarily magnitude
Mathematical derivation
d
d
t u
sj t
du
dt
1
j
d
s j t , with
dt
1 d
So we have to check
s0 1
dt
0
1
bn b n
1
0
bn
1
j
uj
1
u j,t u
u uj
,u
u j, uj
j
1 d
s1 0
dt
1
b n , since
d
s 1
dt 0
n bn b n
1
ands1 0
n bn
1
bn
1
B-Splines – C1-continuity
Given: Two Bézier curves
How to test C1-continuity
Consider the joint points of the spline and its
direct neighbours
Are they collinear?
When no joint it isn‘t even C0-continuous
No, then the spline is not C1-continuous
Ok, they are collinear
Then check the ratio of the distance from the knot point
neighbours to the knot point. It must be same ratio as of
the corresponding nodes
B-Splines – C2-continuity
C2-continuity at knot bi
Precondition: C1-continuity
Nodes bn-2, bn-1, bn and bn, bn+1, bn+2
must describe a unique global quadratic
Bézier curve
So there must exist a (unique) point d, so
that bn-2, d, bn+2 describe this curve
B-Splines – C2-continuity
The point d must fulfill two conditions
bn
bn
1
1
1 t bn 2 t d
1 t d t bn 2
u0
0
at whicht
0
u1
u2
1
B-Splines
How to test for C2-continuity
First of all test for C1-continuity
If it is not, it cannot be C2-continuous
Check for uniqueness of point d
Extrapolate d- from bn-2 and bn-1
Extrapolate d+ from bn+2 and bn+1
d- and d+ must be equal
u0
u1
u2
In Practice specify a tolerance
Quadratic B-Splines
Construction of a C1-continuous quadratic
B-Spline
Different approach
Per definition we want a C1-continuous curve
We do not want to test two segments for
C1-continuity anymore
Given are n+1 control points d0 ,..., dn
spanning the control polygon of the B-Spline
Constructing Bézier control points for a
C1-continuous quadratic B-Spline
Quadratic B-Splines
Construction of Bézier polygon:
b0 : d 0
b2 n
b2 i :
i
i 1
b2 i
i 1
b1 = d1
b0 = d0
b2 i
1
i
i 1
0,5
0,5
b2i 1 : d i , i 0,
: dn
2
,n 3
b2 i
1
i
1
b
2 2i
b 3 = d2
1
1
b
2 2i
1 For uniform B-Splines
b6 = d4
b2
b4
Quadratic Bézier segments
b5 = d3
Control polygon
Construction of a uniform quadratic C1-continuous B-Spline with n=5
Cubic B-Splines
Construction of a C2-continuous cubic BSpline
As for quadratic B-Splines we construct the Bézier
control points bi from the B-Spline polygon
spanned by di
Given are n+1 control points d0 ,..., dn again
spanning the control polygon of the B-Spline
Constructing Bézier control points for a
C2-continuous cubic B-Spline
d4= b8
b7
Cubic B-Splines
b9 = d5
d3
b6
Formulas for uniform case
(nonuniform version is too ugly ;)
1
1
d1
d2
2
2
: d n 1 , b3 n 2
1
Cubic Bézier segments
b5
Left end:b0 : d 0 , b1 : d 1 , b2 :
Right end:b3 n
2
b3 i 2 :
di 1
3
1
b3i 1 :
di 1
3
1
b3i :
b3 i 1
2
1
1
:
d
,
b
:
d
dn
2
n
3 n 2
2
n 2
2
2
1
di
3
2
b0 = d0
di
3
1
b 3 i 1 (Remember C1 -condition)
b1 = d1
2
b4
1
b3
d2
b2
B-Spline polygon
Construction of a uniform C2-continuous cubic B-Spline
Cubic B-Splines – storage
A little off-topic aspect: How to store a
B-Spline
For example it could be approximated linearly and
these linear segments could be saved
All Bézier control points could be saved
Obviously inefficient
It‘s more efficient but not perfect
So what to save?
Answer: Only the di need to be saved
Curve can be reconstructed as shown before
Cubic B-Splines – storage
The advantages are obvious
No loss of data. The curve can be exactly
reconstructed
No problems with rounding errors
Little storage space needed
The storage is distinct when low-level storage
information is known
Theoretical interchangability of file format saving
B-Splines
Practice is evidently different
B-Splines – basis
What does the „B“ in the name stand
for?
It does not stand for „Bézier“ as you may
guess, but for „Basis“
Since there exists a basis representation for the
spline in contrary to natural splines
The basis functions are called the minimum
support splines
B-Splines – basis
Definition of B-Splines via basis splines
N
n 1
n
s u :
n
d i N i u , where N i u are the basis splines
i 0
Definition of the basis splines
Global over the whole domain of u
n
So that N i ui 1
Cn-1-smoothness is assured
The support is minimal
That is the range in which it doesn‘t vanish
B-Spline Basis
Ok but how does this look like?
The basis splines over the full domain of u
B-Splines – characteristics
Invariant under affine transformations
You can scale, rotate and translate the
curve
I.e. the control points and get the same result
as doing so with all the points on the curve
Interpolation of end points
Excellent locality
Change of one control points affects at
most n+1 segments
B-Splines – characteristics
Lies within convex closure of
the control points
d7
Stricter than for Bézier curve: Lies
within the the union of the
convex closures of all segments
d0
d1
Convex closure
d2
A C1-continuous quadratic B-Spline
d6
B-Splines – characteristics
Modelling of straight lines possible
Even if all local segments are planar,
modelling of true 3D curves is possible
E.g. quadratic B-Splines are planar in each
segment but the global curve may be true 3D
The degree of the global curve doesn‘t
depend on the number of points
Efficient for modelling curves with many points
Rational Bézier curves
An even more powerful approach
Rational Bézier curves
One major disadvantage of Bézier curves are
that they are not invariant under projection
This means when perspectively projecting a 3D
Bézier curve on the screen the result is no longer
a Bézier curve
For CAGD applications 3D curves are often
projected to be displayed on 2D screens
When projected, the original nonrational curve
results in a rational curve
This leads us to rational Bézier curves
They are invariant under projective transformation
Rational Bézier curves
Definition of a rational Bézier curve
n
n
w i bi B i t
x t :
i 0
n
n
i
wi B t
i 0
As before the bi are the control points
Additionaly every point bi has a weight wi
Rational Bézier curves
You can think of a rational Bézier curve
of the projection of a nonrational one
from 4D space to the hyper-plane w=1
The control polyhedron of this is
spanned by the 4D points (bi . wi , wi)
The bi are the projection of the bi .wi to
the hyperplane w=1
Rational Bézier curves
Let‘s visualize this for a 2D rational Bézier
curve as a projected Bézier curve in 3D to
plane z=1
z=1 plane
3D Bézier curve
2D rational Bézier curve
Rational Bézier curves
The weights give a further degree of liberty
to the designer
Changing the weight differs from moving the
control point
Moving a control point (left) differs heavily from changing its weight (right)
Rational Bézier curves
Because they are invariant under
projection the projected curve can be
modeled further
E.g. a car designer may change the
projected car body
Bézier curves are a subset of the
rational Bézier curves
Special case: Equal weights
NURBS
Puzzeling with rational curves
NURBS
Non Uniform Rational B-Splines
B-Splines with rational Bézier curves
Since 3D rational Bézier curves can be thought of
as nonrational in 4D, all results of normal BSplines apply
Especially the continuity conditions are exactly
identical, but with 4D control points
This implies that their construction is
mathematical identical to that of B-Splines (but as
well in 4D)
NURBS
Note: NURBS can be defined as well as BSplines with Basis Splines
N n 1
n
i
wi bi N t
x t :
i 0
N n 1
n
i
wi N t
i 0
NURBS – characteristics
All conic sections (a circle for example)
can be modelled exactly
Constructing a 2D-circle with NURBS
NURBS – characteristics
It inherits all advantages of B-Splines
(excellent locality, ...) while extending
the liberty of modelling
Therefore today NURBS are standard
for modelling
The next logical step is to model not
only curves but surfaces
This will be discussed in the next lecture
The End
Programming is a race between the
programmer and the universe: The
programmer trying to make the programm
more and more foolproof and the universe
trying to make greater idiots
– so far the universe won.
Questions?
Thank you for paying attention
Sources
Farin, G.:
Kurven und Flächen im Computer Aided Geometric Design
H.-J. Bungartz, M. Griebel, C. Zenger:
Einführung in die Computergraphik
Foley, van Dam, Feiner, Hughes:
Computer Graphics: Principles and Practice - Second Edition in C
http://olli.informatik.uni-oldenburg.de/Grafiti3/grafiti/flow10/page1.html
http://www.cs.berkeley.edu/~sequin/CS284/IMGS/
http://escience.anu.edu.au/lecture/cg/Spline/bSplineFunction.en.html
-- Unkown source