CSE 167: Introduction to Computer Graphics Lecture #13: Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017

Similar documents
Curves. Computer Graphics CSE 167 Lecture 11

CSE 167: Introduction to Computer Graphics Lecture #11: Bezier Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2016

CSE 167: Introduction to Computer Graphics Lecture 12: Bézier Curves. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013

2D Spline Curves. CS 4620 Lecture 18

Curves and Curved Surfaces. Adapted by FFL from CSE167: Computer Graphics Instructor: Ronen Barzel UCSD, Winter 2006

2D Spline Curves. CS 4620 Lecture 13

Computer Graphics Curves and Surfaces. Matthias Teschner

Information Coding / Computer Graphics, ISY, LiTH. Splines

3D Modeling Parametric Curves & Surfaces. Shandong University Spring 2013

Parametric Curves. University of Texas at Austin CS384G - Computer Graphics

Parametric Curves. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell

Computergrafik. Matthias Zwicker. Herbst 2010

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

Lecture IV Bézier Curves

Design considerations

3D Modeling Parametric Curves & Surfaces

Objects 2: Curves & Splines Christian Miller CS Fall 2011

Splines. Parameterization of a Curve. Curve Representations. Roller coaster. What Do We Need From Curves in Computer Graphics? Modeling Complex Shapes

Fall CSCI 420: Computer Graphics. 4.2 Splines. Hao Li.

COMP3421. Global Lighting Part 2: Radiosity

Rational Bezier Curves

Bezier Curves, B-Splines, NURBS

Sung-Eui Yoon ( 윤성의 )

CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling

Computer Graphics CS 543 Lecture 13a Curves, Tesselation/Geometry Shaders & Level of Detail

Curves and Surfaces Computer Graphics I Lecture 9

Intro to Curves Week 4, Lecture 7

Interactive Graphics. Lecture 9: Introduction to Spline Curves. Interactive Graphics Lecture 9: Slide 1

Representing Curves Part II. Foley & Van Dam, Chapter 11

LECTURE #6. Geometric Modelling for Engineering Applications. Geometric modeling for engineering applications

Central issues in modelling

B-spline Curves. Smoother than other curve forms

Roadmap for tonight. What are Bezier curves (mathematically)? Programming Bezier curves (very high level view).

CS770/870 Spring 2017 Curve Generation

Intro to Curves Week 1, Lecture 2

Curves and Surfaces 1

Curves & Surfaces. Last Time? Progressive Meshes. Selective Refinement. Adjacency Data Structures. Mesh Simplification. Mesh Simplification

CS 536 Computer Graphics Intro to Curves Week 1, Lecture 2

CS130 : Computer Graphics Curves (cont.) Tamar Shinar Computer Science & Engineering UC Riverside

08 - Designing Approximating Curves

Further Graphics. Bezier Curves and Surfaces. Alex Benton, University of Cambridge Supported in part by Google UK, Ltd

The Free-form Surface Modelling System

Until now we have worked with flat entities such as lines and flat polygons. Fit well with graphics hardware Mathematically simple

Parametric curves. Brian Curless CSE 457 Spring 2016

Dgp _ lecture 2. Curves

Computer Graphics I Lecture 11

Curves & Surfaces. MIT EECS 6.837, Durand and Cutler

Geometric Modeling of Curves

Outline. Properties of Piecewise Linear Interpolations. The de Casteljau Algorithm. Recall: Linear Interpolation

Splines. Connecting the Dots

Parametric curves. Reading. Curves before computers. Mathematical curve representation. CSE 457 Winter Required:

Properties of Blending Functions

Introduction to Computer Graphics

Curves and Surfaces Computer Graphics I Lecture 10

Outline. The de Casteljau Algorithm. Properties of Piecewise Linear Interpolations. Recall: Linear Interpolation

An introduction to interpolation and splines

CS130 : Computer Graphics Curves. Tamar Shinar Computer Science & Engineering UC Riverside

ECE 600, Dr. Farag, Summer 09

CS-184: Computer Graphics

Curves D.A. Forsyth, with slides from John Hart

COMPUTER AIDED ENGINEERING DESIGN (BFF2612)

COMPUTER AIDED GEOMETRIC DESIGN. Thomas W. Sederberg

Know it. Control points. B Spline surfaces. Implicit surfaces

CS559 Computer Graphics Fall 2015

Curve and Surface Basics

Curves and Surfaces. Computer Graphics COMP 770 (236) Spring Instructor: Brandon Lloyd

An Introduction to B-Spline Curves

Need for Parametric Equations

Curves and Surfaces. Shireen Elhabian and Aly A. Farag University of Louisville

OUTLINE. Quadratic Bezier Curves Cubic Bezier Curves

Rendering Curves and Surfaces. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

Curves and Surfaces for Computer-Aided Geometric Design

GL9: Engineering Communications. GL9: CAD techniques. Curves Surfaces Solids Techniques

Computer Graphics 1. Chapter 2 (May 19th, 2011, 2-4pm): 3D Modeling. LMU München Medieninformatik Andreas Butz Computergraphik 1 SS2011

Problem Max. Points Total 80

Keyword: Quadratic Bézier Curve, Bisection Algorithm, Biarc, Biarc Method, Hausdorff Distances, Tolerance Band.

Advanced Graphics. Beziers, B-splines, and NURBS. Alex Benton, University of Cambridge Supported in part by Google UK, Ltd

In this course we will need a set of techniques to represent curves and surfaces in 2-d and 3-d. Some reasons for this include

Lecture 9: Introduction to Spline Curves

Bezier Curves. An Introduction. Detlef Reimers

Bézier Splines. B-Splines. B-Splines. CS 475 / CS 675 Computer Graphics. Lecture 14 : Modelling Curves 3 B-Splines. n i t i 1 t n i. J n,i.

Advanced Texture-Mapping Curves and Curved Surfaces. Pre-Lecture Business. Texture Modes. Texture Modes. Review quiz

MA 323 Geometric Modelling Course Notes: Day 21 Three Dimensional Bezier Curves, Projections and Rational Bezier Curves

(Refer Slide Time: 00:02:24 min)

A Curve Tutorial for Introductory Computer Graphics

CS 465 Program 4: Modeller

INF3320 Computer Graphics and Discrete Geometry

Curve Representation ME761A Instructor in Charge Prof. J. Ramkumar Department of Mechanical Engineering, IIT Kanpur

Introduction to Geometry. Computer Graphics CMU /15-662

CS 475 / CS Computer Graphics. Modelling Curves 3 - B-Splines

Review of Tuesday. ECS 175 Chapter 3: Object Representation

Computer Graphics. Curves and Surfaces. Hermite/Bezier Curves, (B-)Splines, and NURBS. By Ulf Assarsson

Intro to Modeling Modeling in 3D

A MATRIX FORMULATION OF THE CUBIC BÉZIER CURVE

EECS 487: Interactive Computer Graphics f

CS337 INTRODUCTION TO COMPUTER GRAPHICS. Describing Shapes. Constructing Objects in Computer Graphics. Bin Sheng Representing Shape 9/20/16 1/15

Shape Representation Basic problem We make pictures of things How do we describe those things? Many of those things are shapes Other things include

The Essentials of CAGD

Computer Graphics Splines and Curves

For each question, indicate whether the statement is true or false by circling T or F, respectively.

Transcription:

CSE 167: Introduction to Computer Graphics Lecture #13: Curves Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017

Announcements Project 4 due Monday Nov 27 at 2pm Next Tuesday: midterm #2 Topics: everything since first midterm including lecture this Thursday 2

Lecture Overview Polynomial Curves Introduction Polynomial functions Bézier Curves Introduction Drawing Bézier curves Piecewise Bézier curves 3

Modeling Creating 3D objects How to construct complex surfaces? Goal Specify objects with control points Objects should be visually pleasing (smooth) Start with curves, then surfaces What can curves be used for? 4

Curves Surface of revolution 5

Curves Extruded/swept surfaces 6

Curves Animation Provide a track for objects Use as camera path 7

Video Bezier Curves http://www.youtube.com/watch?v=hldyjneiyvu 8

Curves Can be generalized to surface patches 9

Curve Representation Why not specify many points along a curve and connect with lines: Can t get smooth results when magnified more points needed Large storage and CPU requirements Instead: specify a curve with a small number of control points Known as a spline curve or spline. Control point 10

Spline: Definition Wikipedia: Term comes from flexible spline devices used by shipbuilders and draftsmen to draw smooth shapes. Spline consists of a long strip fixed in position at a number of points that relaxes to form a smooth curve passing through those points. 11

Lecture Overview Polynomial Curves Introduction Polynomial functions Bézier Curves Introduction Drawing Bézier curves Piecewise Bézier curves 12

Interpolating Control Points Interpolating means that curve goes through all control points A.k.a. Anchor Points Seems most intuitive But hard to control exact behavior 13

Approximating Control Points Curve is influenced by control points Various types Most common: polynomial functions Bézier spline (our focus) B-spline (generalization of Bézier spline) NURBS (Non Uniform Rational Basis Spline): used in CAD tools 14

Mathematical Definition A vector valued function of one variable x(t) Given t, compute a 3D point x=(x,y,z) Could be interpreted as three functions: x(t), y(t), z(t) Parameter t moves a point along the curve x(t) z y x(0.0) x(0.5) x(1.0) x 15

Tangent Vector Derivative Vector x : Points in direction of movement Length corresponds to speed x(t) z y x (0.0) x (0.5) x (1.0) 16 x

Lecture Overview Polynomial Curves Introduction Polynomial functions Bézier Curves Introduction Drawing Bézier curves Piecewise Bézier curves 17

Polynomial Functions Linear: (1 st order) Quadratic: (2 nd order) Cubic: (3 rd order) 18

Polynomial Curves in 3D Linear Evaluated as: 19

Polynomial Curves in 3D Quadratic: (2 nd order) Cubic: (3 rd order) We usually define the curve for 0 t 1 20

Control Points Polynomial coefficients a, b, c, d can be interpreted as control points Remember: a, b, c, d have x,y,z components each But: they do not intuitively describe the shape of the curve Goal: intuitive control points 21

Weighted Average Based on linear interpolation (LERP) Weighted average between two values Value could be a number, vector, color, Interpolate between points p 0 and p 1 with parameter t Defines a curve that is straight (first-order spline) p 0. 0<t<1 t=0. p 1 t=1 x(t) = Lerp( t, p 0, p 1 )= ( 1 t)p 0 + t p 1 22

Linear Polynomial x(t) = (p 1 p 0 ) t + p 0 vector point Curve is based at point p 0 Add the vector, scaled by t p 0..5(p 1 -p 0 ). p 1 -p 0. 23

Matrix Form Geometry matrix Geometric basis Polynomial basis In components 24

Summary 1. Grouped by points p: weighted average 2. Grouped by t: linear polynomial 3. Matrix form: 25

Tangent Weighted average Polynomial Matrix form 26

Lecture Overview Polynomial Curves Introduction Polynomial functions Bézier Curves Introduction Drawing Bézier curves Piecewise Bézier curves 27

Bézier Curves Are a higher order extension of linear interpolation p 1 p 1 p 1 p 2 p 3 p 0 p 0 p 0 p 2 Linear Quadratic Cubic 28

Bézier Curves Give intuitive control over curve with control points Endpoints are interpolated, intermediate points are approximated Demo: http://blogs.sitepointstatic.com/examples/tech/canvas-curves/beziercurve.html 29

Cubic Bézier Curve Most commonly used case Defined by four control points: Two interpolated endpoints (points are on the curve) Two points control the tangents at the endpoints Points x on curve defined as function of parameter t p 1 p 0 x(t) p 2 30 p 3

Algorithmic Construction Algorithmic construction De Casteljau algorithm, developed at Citroen in 1959, named after its inventor Paul de Casteljau (pronounced Cast-all- Joe ) Developed independently from Bézier s work: Bézier created the formulation using blending functions, Casteljau devised the recursive interpolation algorithm 31

De Casteljau Algorithm A recursive series of linear interpolations Works for any order Bezier function, not only cubic Not very efficient to evaluate Other forms more commonly used But: Gives intuition about the geometry Useful for subdivision 32

De Casteljau Algorithm Given: Four control points A value of t (here t 0.25) p 1 p 0 p 2 p 3 33

De Casteljau Algorithm p 1 q 1 q 0 (t) = Lerp( t,p 0,p ) 1 p 0 q 0 q 1 (t) = Lerp( t,p 1,p ) 2 p 2 q 2 (t) = Lerp( t,p 2,p ) 3 q 2 p 3 34

De Casteljau Algorithm q 0 r 0 q 1 r 0 (t) = Lerp( t,q 0 (t),q 1 (t)) r 1 (t) = Lerp( t,q 1 (t),q 2 (t)) r 1 q 2 35

De Casteljau Algorithm r 0 x r 1 x(t) = Lerp( t,r 0 (t),r 1 (t)) 36

De Casteljau Algorithm p 1 p 0 x p 2 Demo https://www.jasondavies.com/animated-bezier/ p 3 37

Recursive Linear Interpolation x = Lerp t,r 0,r 1 ( ) r = Lerp ( t,q,q ) 0 0 1 ( ) r 1 = Lerp t,q 1,q 2 q 0 = Lerp( t,p 0,p ) 1 q 1 = Lerp( t,p 1,p ) 2 q 2 = Lerp( t,p 2,p ) 3 p 0 p 1 p 2 p 3 p 1 q 0 r 0 p 2 x q 1 r 1 p 3 q 2 p 4 38

Expand the LERPs q 0 (t) = Lerp( t,p 0,p 1 )= ( 1 t)p 0 + tp 1 q 1 (t) = Lerp( t,p 1,p 2 )= ( 1 t)p 1 + tp 2 q 2 (t) = Lerp( t,p 2,p 3 )= ( 1 t)p 2 + tp 3 r 0 (t) = Lerp( t,q 0 (t),q 1 (t))= 1 t r 1 (t) = Lerp( t,q 1 (t),q 2 (t))= 1 t ( ) ( )p 0 + tp 1 )+ t ( 1 t)p 1 + tp 2 ( )p 1 + tp 2 )+ t ( 1 t)p 2 + tp 3 ( ) 1 t ( ) 1 t x(t) = Lerp t,r 0 (t),r 1 (t) = ( 1 t) ( 1 t) ( 1 t)p 0 + tp 1 )+ t ( 1 t)p 1 + tp 2 +t ( 1 t) ( 1 t)p 1 + tp 2 )+ t ( 1 t)p 2 + tp 3 39 ( ) ( ) ( ) ( ) ( ) ( )

Weighted Average of Control Points Regroup for p: x(t) = 1 t ( )p 0 + tp 1 )+ t ( 1 t)p 1 + tp 2 ( )p 1 + tp 2 )+ t( 1 t)p 2 + tp 3 ) ( ) ( 1 t) 1 t +t 1 t ( ) ( ) ( ) 1 t ( ) x(t) = ( 1 t) 3 p 0 + 3( 1 t) 2 tp 1 + 3( 1 t)t 2 p 2 + t 3 p 3 B 0 (t ) B 1 (t ) x(t) = t 3 + 3t 2 3t + 1 p 0 + 3t 3 6t 2 + 3t ( ) ( ) + 3t 3 + 3t 2 p 2 + t 3 p 3 B 2 (t ) ( ) B 3 (t ) ( ) p 1 40

Cubic Bernstein Polynomials x(t) = B 0 ( t)p 0 + B 1 ( t)p 1 + B 2 ( t)p 2 + B 3 ( t)p 3 The cubic Bernstein polynomials : B 0 ( t)= t 3 + 3t 2 3t + 1 B 1 ( t)= 3t 3 6t 2 + 3t B 2 ( t)= 3t 3 + 3t 2 ( t)= t 3 B 3 B i (t) = 1 Weights B i (t) add up to 1 for any value of t 41

General Bernstein Polynomials B 1 0 B 1 1 ( t)= t + 1 B 2 0 ( t)= t 2 2t + 1 B 3 0 ( t)= t 3 + 3t 2 3t + 1 ( t)= t B 2 1 ( t)= 2t 2 + 2t B 3 1 ( t)= 3t 3 6t 2 + 3t B 2 2 ( t)= t 2 B 3 2 ( t)= 3t 3 + 3t 2 B 3 3 ( t)= t 3 42 B i n ( t)= n i ( 1 t )n i t i = n! i! ( n i)! B n i ( t) = 1 n! = factorial of n ( ) i n (n+1)! = n! x (n+1)

Any order Bézier Curves nth-order Bernstein polynomials form nth-order Bézier curves B i n ( t)= n i ( 1 t)n i t n i=0 x( t)= B n i ( t)p i ( ) i 43

Demo: Bezier curves of multiple orders http://www.ibiblio.org/e-notes/splines/bezier.html 44

Useful Bézier Curve Properties Convex Hull property Affine Invariance 45

Convex Hull Property A Bézier curve is always inside the convex hull Makes curve predictable Allows culling, intersection testing, adaptive tessellation p 1 p 3 p 0 p 2 46

Affine Invariance Transforming Bézier curves Two ways to transform: First transform control points, then compute spline points First compute spline points, then transform them Results are identical Invariant under affine transformations 47

Cubic Polynomial Form Start with Bernstein form: x(t) = ( t 3 + 3t 2 3t + 1)p 0 + ( 3t 3 6t 2 + 3t)p 1 + ( 3t 3 + 3t 2 )p 2 + ( t 3 )p 3 Regroup into coefficients of t : x(t) = ( p 0 + 3p 1 3p 2 + p 3 )t 3 + ( 3p 0 6p 1 + 3p 2 )t 2 + ( 3p 0 + 3p 1 )t + ( p 0 )1 x(t) = at 3 + bt 2 + ct + d ( ) ( ) ( ) ( ) a = p 0 + 3p 1 3p 2 + p 3 b = 3p 0 6p 1 + 3p 2 c = 3p 0 + 3p 1 d = p 0 Good for fast evaluation Precompute constant coefficients (a,b,c,d) Not much geometric intuition 48

Cubic Matrix Form x(t) = a t 3 b c t 2 d t 1 a = p 0 + 3p 1 3p 2 + p 3 b = ( 3p 0 6p 1 + 3p 2 ) c = ( 3p 0 + 3p 1 ) d = p 0 ( ) ( ) 1 3 3 1 t 3 3 6 3 0 x(t) = [ p 0 p 1 p 2 p 3 ] t 2 3 3 0 0 t 1 0 0 0 1 G Bez B Bez T xx tt = GG BBBBBB BB BBBBBB TT = CC TT 49

Matrix Form Other types of cubic splines use different basis matrices Efficient evaluation Pre-compute C Use existing 4x4 matrix hardware support 50

Lecture Overview Polynomial Curves Introduction Polynomial functions Bézier Curves Introduction Drawing Bézier curves Piecewise Bézier curves 51

Drawing Bézier Curves Draw line segments or individual pixels Approximate the curve as a series of line segments (tessellation) Uniform sampling Adaptive sampling Recursive subdivision 52

Uniform Sampling Approximate curve with N straight segments N chosen in advance Evaluate x i = x t i ( ) where t i = i N for i = 0, 1,, N Connect points with lines Too few points? Poor approximation: curve is faceted Too many points? x i = a i3 N + b i2 3 N + c i 2 N + d Slow to draw too many line segments x(t) x 0 x 1 x 2 x 3 x4 53

Adaptive Sampling Use only as many line segments as you need Fewer segments where curve is mostly flat More segments where curve bends Segments never smaller than a pixel x(t) 54

Recursive Subdivision Any cubic curve segment can be expressed as a Bézier curve Any piece of a cubic curve is itself a cubic curve Therefore: Any Bézier curve can be broken down into smaller Bézier curves 55

De Casteljau Subdivision p 1 p 0 q r 0 0 r x 1 p 2 De Casteljau construction points are the control points of two Bézier sub-segments q 2 p 3 56

Adaptive Subdivision Algorithm Use De Casteljau construction to split Bézier segment in two For each part If flat enough : draw line segment Else: continue recursion Curve is flat enough if hull is flat enough Test how far the approximating control points are from a straight segment If less than one pixel, the hull is flat enough 57

Lecture Overview Polynomial Curves Introduction Polynomial functions Bézier Curves Introduction Drawing Bézier curves Longer curves 58

More Control Points Cubic Bézier curve limited to 4 control points Cubic curve can only have one inflection (point where curve changes direction of bending) Need more control points for more complex curves k-1 order Bézier curve with k control points Hard to control and hard to work with 59 Intermediate points don t have obvious effect on shape Changing any control point changes the whole curve Want local support: each control point only influences nearby portion of curve

Piecewise Curves Sequence of line segments Piecewise linear curve Sequence of cubic curve segments Piecewise cubic curve (here piecewise Bézier) 60

Global Parameterization Given N curve segments x 0 (t), x 1 (t),, x N-1 (t) Each is parameterized for t from 0 to 1 Define a piecewise curve Global parameter u from 0 to N x(u) = x 0 (u), 0 u 1 x 1 (u 1), 1 u 2 x N 1 (u ( N 1)), N 1 u N x(u) = x i (u i), where i = u (and x(n) = x N 1 (1)) Alternate solution: u defined from 0 to 1 x(u) = x i (Nu i), where i = Nu 61

Piecewise Bézier curve Given 3N + 1 points p 0,p 1,,p 3N Define N Bézier segments: x 0 (t) = B 0 (t)p 0 + B 1 (t)p 1 + B 2 (t)p 2 + B 3 (t)p 3 x 1 (t) = B 0 (t)p 3 + B 1 (t)p 4 + B 2 (t)p 5 + B 3 (t)p 6 x N 1 (t) = B 0 (t)p 3N 3 + B 1 (t)p 3N 2 + B 2 (t)p 3N 1 + B 3 (t)p 3N p 7 p 8 p 0 p p 2 1 x 0 (t) p 3 x 1 (t) p 6 x 2 (t) p 9 x 3 (t) p 10 p 11 p 12 p 4 p 5 62

Piecewise Bézier Curve Parameter in 0<=u<=3N x(u) = x 0 ( 1 u), 0 u 3 3 x 1 ( 1 u 1), 3 u 6 3 x N 1 ( 1 3 u (N 1)), 3N 3 u 3N 1 x(u) = x i ( u i 3 ), where i = 1 u 3 x(8.75) x 0 (t) x 1 (t) x 2 (t) x 3 (t) u=0 x(3.5) u=12 63

Parametric Continuity C 0 continuity: Curve segments are connected C 1 continuity: C 0 & 1st-order derivatives agree Curves have same tangents Relevant for smooth shading C 2 continuity: C 1 & 2nd-order derivatives agree Curves have same tangents and curvature Relevant for high quality reflections

Piecewise Bézier Curve 3N+1 points define N Bézier segments x(3i)=p 3i C 0 continuous by construction C 1 continuous at p 3i when p 3i - p 3i-1 = p 3i+1 - p 3i C 2 is harder to achieve and rarely necessary p 4 p 1 p 2 P 3 p 6 p 1 p 2 P 3 p 6 p 4 p 5 p 0 p 5 p 0 C 1 discontinuous C 1 continuous 65

Piecewise Bézier Curves Used often in 2D drawing programs Inconveniences Must have 4 or 7 or 10 or 13 or (1 plus a multiple of 3) control points Some points interpolate, others approximate Need to impose constraints on control points to obtain C 1 continuity Solutions User interface using Bézier handles to ascertain C 1 continuity Generalization to B-splines or NURBS 66

Bézier Handles Segment end points (interpolating) presented as curve control points Midpoints (approximating points) presented as handles Can have option to enforce C 1 continuity Adobe Illustrator 67

Demo: Bezier handles http://math.hws.edu/eck/cs424/notes2013/canvas/bezier.ht ml 68

Rational Curves Weight causes point to pull more (or less) Can model circles with proper points and weights, Below: rational quadratic Bézier curve (three control points) pull less 69

B-Splines B as in Basis-Splines Basis is blending function Difference to Bézier blending function: B-spline blending function can be zero outside a particular range (limits scope over which a control point has influence) B-Spline is defined by control points and range in which each control point is active. 70

NURBS Non Uniform Rational B-Splines Generalization of Bézier curves Non uniform: Combine B-Splines (limited scope of control points) and Rational Curves (weighted control points) Can exactly model conic sections (circles, ellipses) OpenGL support: see glunurbscurve Demos: http://bentonian.com/teaching/advgraph0809/demos/nurbs2d/index. html http://geometrie.foretnik.net/files/nurbs-en.swf 71