Download presentation
Presentation is loading. Please wait.
1
MAE 152 Computer Graphics for Scientists and Engineers
Splines and Bezier Curves
2
Introduction |Representing Curves Interpolation Parametric equations
A number of small line-segments joined Interpolation Parametric equations Types of curve we study Natural Cubic Splines and Bezier Curves Derivation Implementation
3
“Computers can’t draw curves.”
The more points/line segments that are used, the smoother the curve.
4
Why have curves ? Representation of “irregular surfaces”
Example: Auto industry (car body design) Artist’s representation Clay / wood models Digitizing Surface modeling (“body in white”) Scaling and smoothening Tool and die Manufacturing
5
Curve representation Problem: How to represent a curve easily and efficiently “Brute force and ignorance” approaches: storing a curve as many small straight line segments doesn’t work well when scaled inconvenient to have to specify so many points need lots of points to make the curve look smooth working out the equation that represents the curve difficult for complex curves moving an individual point requires re-calculation of the entire curve
6
Solution - Interpolation
Define a small number of points Join the points with a series of (short) straight lines Use a technique called “interpolation” to invent the extra points for us.
7
The need for smoothness
So far, mostly polygons Can approximate any geometry, but Only approximate Need lots of polygons to hide discontinuities Storage problems Math problems Normal direction Texture coordinates Not very convenient as modeling tool Gets even worse in animation Almost always need smooth motion
8
Geometric modeling Representing world geometry in the computer
Discrete vs. continuous again At least some part has to be done by a human Will see some automatic methods soon Reality: humans are discrete in their actions Specify a few points, have computer create something which “makes sense” Examples: goes through points, goes “near” points
9
Requirements Want mathematical smoothness Local control
Some number of continuous derivatives of P Local control Local data changes have local effect Continuous with respect to the data No wiggling if data changes slightly Low computational effort
10
A solution Use SEVERAL polynomials
Complete curve consists of several pieces All pieces are of low order Third order is the most common Pieces join smoothly This is the idea of spline curves or just “splines”
11
Parametric Equations - linear
Walk from P0 to P1 at a constant speed. Start from P0 at t=0 Arrive at P1 at t=1 dx = x1 - x0 dy = y1 - y0 Where are you at a general time t? x(t) = x0 + t.dx y(t) = y0 + t.dy Equation(s) of a straight line as a function of an arbitrary parameter t.
12
Why use parametric equations?
One, two, three or n-dimensional representation is possible Can handle “infinite slope” of tangents Can represent multi-valued functions
13
For this class … Natural Cubic Spline Bezier Curves
14
Splines Define the “knots” Calculate all other points
(x0,y0) - (x3,y3) Calculate all other points
15
Continuity Parametric continuity Cx Geometric continuity Gx
Only P is continuous: C0 Positional continuity P and first derivative dP/du are continuous: C1 Tangential continuity P + first + second: C2 Curvature continuity Geometric continuity Gx Only directions have to match
16
Order of continuity (a) (b) (c)
17
Wiggling effect Example:
Four data points Third degree polynomial Might look something like: This the ONLY third degree polynomial which fits the data Wiggling gets much worse with higher degree
18
Polynomial parametric equations
To represent a straight line - linear parametric equation (i.e. one where the highest power of t was 1). For curves, we need polynomial equations. Why? Because the graphs of polynomial equations wiggle!
19
Natural Cubic Spline spline, n. 1 A long narrow and relatively thin piece or strip of wood, metal, etc. 2 A flexible strip of wood or rubber used by draftsmen in laying out broad sweeping curves, as in railroad work. A natural spline defines the curve that minimizes the potential energy of an idealized elastic strip.
20
A natural cubic spline defines a curve, in which the points P(u) that define each segment of the spline are represented as a cubic P(u) = a0 + a1u + a2u2 + a3u3 Where u is between 0 and 1 and a0, a1, a2 and a3 are (as yet) undetermined parameters. We assume that the positions of n+1 control points Pk, where k = 0, 1,…, n are given, and the 1st and 2nd derivatives of P(u) are continuous at each interior control point.
21
Why cubic? Undesirable wiggles and oscillations for higher orders
The lowest order polynomials to satisfy the following conditions Caution! Heavy math ahead!
22
A parametrically defined curve
Parameterization A parametrically defined curve
23
“Re-parameterization”
non-uniform
24
Interpolation versus Approximation
25
Hermite Interpolation
1 2 3 4 5
26
Hermite Spline Say the user provides
A cubic spline has degree 3, and is of the form: For some constants a, b, c and d derived from the control points, but how? We have constraints: The curve must pass through x0 when t=0 The derivative must be x’0 when t=0 The curve must pass through x1 when t=1 The derivative must be x’1 when t=1
27
How to specify slope Di
28
Hermite Spline A Hermite spline is a curve for which the user provides: The endpoints of the curve The parametric derivatives of the curve at the endpoints The parametric derivatives are dx/dt, dy/dt, dz/dt That is enough to define a cubic Hermite spline, more derivatives are required for higher order curves
29
Hermite Spline Solving for the unknowns gives: Rearranging gives: or
30
Hermite curves in 2D and 3D
We have defined only 1D splines: x = f(t:x0,x1,x’0,x’1) For higher dimensions, define the control points in higher dimensions (that is, as vectors)
31
Basis Functions A point on a Hermite curve is obtained by multiplying each control point by some function and summing The functions are called basis functions
32
Hermite and Cubic Spline Interpolation
An interpolating cubic spline
33
need two more Eq’s to determine all coefficients
Spline Interpolation need two more Eq’s to determine all coefficients Natural Spline
34
Deriving Natural Cubic Splines
35
Tri-Diagonal Matrix for Natural Cubic Spline
36
Closed Curves Homework
37
Bezier Curves An alternative to splines
M. Bezier was a French mathematician who worked for the Renault motor car company. He invented his curves to allow his firm’s computers to describe the shape of car bodies.
38
Bezier Approximation
39
Bezier curves Typically, cubic polynomials
Similar to Hermite interpolation Special way of specifying end tangents Requires special set of coefficients Need four points Two at the ends of a segment Two control tangent vectors
40
Bezier curves Control polygon: control points connected to each other
Easy to generalize to higher order Insert more control points Hermite – third order only
41
De Casteljau algorithm
Can compute any point on the curve in a few iterations No polynomials, pure geometry Repeated linear interpolation Repeated order of the curve times The algorithm can be used as definition of the curve
42
De Casteljau algorithm
Third order, u=0.75
43
De Casteljau algorithm
44
De Casteljau algorithm
45
De Casteljau algorithm
46
De Casteljau Algorithm
47
What does it mean ? 1
48
Bezier Polynomial Function
49
Parametric equations for x(t),y(t)
50
Some Bezier Curves
51
Bezier Curves - properties
Not all of the control points are on the line Some just attract it towards themselves Points have “influence” over the course of the line “Influence” (attraction) is calculated from a polynomial expression (show demo applet)
52
Convex Hull property
53
Bezier Curve Properties
The first and last control points are interpolated The tangent to the curve at the first control point is along the line joining the first and second control points The tangent at the last control point is along the line joining the second last and last control points The curve lies entirely within the convex hull of its control points The Bernstein polynomials (the basis functions) sum to 1 and are everywhere positive They can be rendered in many ways E.g.: Convert to line segments with a subdivision algorithm
54
Disadvantages The degree of the Bezier curve depends on the
number of control points. The Bezier curve lacks local control. Changing the position of one control point affects the entire curve.
55
Invariance Translational invariance means that translating the control points and then evaluating the curve is the same as evaluating and then translating the curve Rotational invariance means that rotating the control points and then evaluating the curve is the same as evaluating and then rotating the curve These properties are essential for parametric curves used in graphics It is easy to prove that Bezier curves, Hermite curves and everything else we will study are translation and rotation invariant
56
Longer Curves A single cubic Bezier or Hermite curve can only capture a small class of curves At most 2 inflection points One solution is to raise the degree Allows more control, at the expense of more control points and higher degree polynomials Control is not local, one control point influences entire curve Alternate, most common solution is to join pieces of cubic curve together into piecewise cubic curves Total curve can be broken into pieces, each of which is cubic Local control: Each control point only influences a limited part of the curve Interaction and design is much easier
57
Piecewise Bezier Curve
“knot” P0,0 P1,3 P0,3 P1,0 P1,2 P1,1
58
Continuity When two curves are joined, we typically want some degree of continuity across the boundary (the knot) C0, “C-zero”, point-wise continuous, curves share the same point where they join C1, “C-one”, continuous derivatives, curves share the same parametric derivatives where they join C2, “C-two”, continuous second derivatives, curves share the same parametric second derivatives where they join Higher orders possible Question: How do we ensure that two Hermite curves are C1 across a knot? Question: How do we ensure that two Bezier curves are C0, or C1, or C2 across a knot?
59
Achieving Continuity For Hermite curves, the user specifies the derivatives, so C1 is achieved simply by sharing points and derivatives across the knot For Bezier curves: They interpolate their endpoints, so C0 is achieved by sharing control points The parametric derivative is a constant multiple of the vector joining the first/last 2 control points So C1 is achieved by setting P0,3=P1,0=J, and making P0,2 and J and P1,1 collinear, with J-P0,2=P1,1-J C2 comes from further constraints on P0,1 and P1,2
60
Bezier Continuity P0,0 P0,1 P0,2 J P1,1 P1,2 P1,3
Disclaimer: PowerPoint curves are not Bezier curves, they are interpolating piecewise quadratic curves! This diagram is an approximation.
61
Problem with Bezier Curves
To make a long continuous curve with Bezier segments requires using many segments Maintaining continuity requires constraints on the control point positions The user cannot arbitrarily move control vertices and automatically maintain continuity The constraints must be explicitly maintained It is not intuitive to have control points that are not free
62
Bezier Basis Functions for d=3
63
Bezier Curves in OpenGL
OpenGL supports Beziers through mechanism called evaluators used to compute the blending functions, bi (u), of any degree. Smooth curves and surfaces are drawn by approximating them with large number of small line segments or polygons. Described mathematically by a small number of parameters such as control points. Evaluator is a way to compute points on a curve or surface using only control points. They do not require uniform spacing of u. Bezier curves can then be rendered at any precision. 1D Bezier curves can also be used to define paths in time for animation
64
Evaluators A Bezier curve is a vector-valued function of one variable C(u) = [X(u) Y(u) Z(u)] and a Bezier surface patch is a vector-valued function of two variable S(u,v) = [X(u,v) Y(u,v) Z(u,v)] To use evaluator first define the function C(u) or S(u,v) then use the glEvalCoord{12}() command
65
Berstein Polynomial & Bezier Curve
66
One-Dimensional Evaluators
GLfloat ctrlpoints[4][3] = {...}; void init(void) { glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]); } void display(void) { glBegin(GL_LINE_STRIP); for(i=0; i<=30; i++) glEvalCoord1f((GLfloat)i/30.0); glEnd();
67
Defining 1-D Evaluator glMap1(target,u1,u2,stride,order,points);
target: tells what the control points represent u1,u2: the range of the variable u stride: the number of floating-point values to advance in the data between one control point and the next order: the degree plus one, and it should agree with the number of control points points: pointer to the first coordinate of the first control point
68
Evaluating 1-D Evaluator
glEvalCoord1(u); glEvalCoord1v(*u); Causes evaluation of the enabled maps u: the value of the domain coordinate More than one evaluator can be defined and evaluated at a time. (ex) GL_MAP1_VERTEX_3 and GL_MAP1_COLOR_4 In this case, calls to glEvalCoord1() generates both a position and a color.
69
e.g. /* define and enable 1D evaluator for Bezier cubic curve */
point ctrlpts[ ] = { ……. } ; glMaplf ( GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, ctrlpts); glEnable (GL_MAP1_VERTEX_3); /* GL_MAP1_VERTEX_3 specifies data type for ctrlpts , range of u = [ 0.0, 1.0], 3 is the number of values between control points , (order = degree +1) = */ /* With evaluator enabled, draw line segments for Bezier curve */ glBegin (GL_LINE_STRIP); for ( i = 0; i <= 30; i ++) glEvalCoord1f ( (Glfloat) i/30.0); glEnd ( )
70
One-Dimensional Grid and Its Eval.
define a one-dimensional evenly spaced grid using glMapGrid1*(), and then evaluate the (part of) grid points using glEvalMesh1() glMapGrid1(n, u1, u2); defines a grid that goes from u1 to u2 in n steps. glEvalMesh1(mode, p1, p2); mode: GL_POINT or GL_LINE evaluates from integer indices p1 to p2 with evenly spaced coordinate
71
Bezier Surface
72
Two-Dimensional Evaluators
Everything is similar to the one-dimensional case, except that all the commands must take two parameters, u and v, into account 1. Define evaluator(s) with glMap2*() 2. Enable them with glEnable() 3. Invoke them by calling glEvalCoord2() between a glBegin() and glEnd() or by specifying and applying a mesh with glMapGrid2() and glEvalMesh2()
73
Defining and Evaluating
glMap2(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); glEvalCoord2(u, v); glEvalCoord2v(*values); Example
74
Grid and Its Evaluation
glMapGrid2(nu, u1, u2, nv, v1, v2); glEvalMesh2(mode, i1, i2, j1, j2);
75
Using Evaluators for Textures
GLfloat ctrlpoints[4][4][3] = {...}; GLfloat texpts[2][2][2] = {...}; void init(void) { glMap2f(GL_MAP2_VERTEX_3,..., &ctrlpoints[0][0][0]); glMap2f(GL_MAP2_TEXTURE_COORD_2,..., &texpts[0][0][0]); glEnable(GL_ MAP2_VERTEX_3); glEnable(GL_MAP2_TEXTURE_COORD_2); glMapGrid2f(...); } void display(void) { glEvalMesh2(...);
76
End Of Curves
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.