# #7: Cubic Curves - PowerPoint PPT Presentation  Download Presentation #7: Cubic Curves

#7: Cubic Curves
Download Presentation ## #7: Cubic Curves

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
##### Presentation Transcript

1. #7: Cubic Curves CSE167: Computer Graphics Instructor: Ronen Barzel UCSD, Winter 2006

2. Outline for today • Inverses of Transforms • Curves overview • Bézier curves

3. Graphics pipeline transformations • Remember the series of transforms in the graphics pipe: • M - model: places object in world space • C - camera: places camera in world space • P - projection: from camera space to normalized view space • D - viewport: remaps to image coordinates • And remember about C: • handy for positioning the camera as a model • backwards for the pipeline: • we need to get from world space to camera space • So we need to use C-1 • You’ll need it for project 4: OpenGL wants you to load C-1 as the base of the MODELVIEW stack

4. How do we get C-1? • Could construct C, and use a matrix-inverse routine • Would work. • But relatively slow. • And we didn’t give you one :) • Instead, let’s construct C-1 directly • based on how we constructed C • based on shortcuts and rules for affine transforms

5. Inverse of a translation • Translate back, i.e., negate the translation vector • Easy to verify:

6. Inverse of a scale • Scale by the inverses • Easy to verify:

7. Inverse of a rotation • Rotate about the same axis, with the oppose angle: • Inverse of a rotation is the transpose: • Columns of a rotation matrix are orthonormal • ATA produces all columns’ dot-product combinations as matrix • Dot product of a column with itself = 1 (on the diagonal) • Dot product of a column with any other column = 0 (off the diagonal)

8. Inverses of composition • If you have a series of transforms composed together

9. Composing with inverses, pictorially • To go from one space to another, compose along arrows • Backwards along arrow: use inverse transform

10. Model-to-Camera transform Camera-to-worldC Model-to-Camera = C-1M y z x Camera Space

11. The look-at transformation • Remember, we constructed C using the look-at idiom:

12. C-1 from a,b,c,d columns

13. Outline for today • Inverses of Transforms • Curves overview • Bézier curves

14. Usefulness of curves in modeling • Surface of revolution

15. Usefulness of curves in modeling • Extruded/swept surfaces

16. Usefulness of curves in modeling • Surface patches

17. Usefulness of curves in animation • Provide a “track” for objects http://www.f-lohmueller.de/

18. Usefulness of curves in animation • Specify parameter values over time: 2D curve edtior

19. How to represent curves • Specify every point along a curve? • Used sometimes as “freehand drawing mode” in 2D applications • Hard to get precise results • Too much data, too hard to work with generally • Specify a curve using a small number of “control points” • Known as a spline curveor just spline

20. Interpolating Splines • Specify points, the curve goes through all the points • Seems most intuitive • Surprisingly, not usually the best choice. • Hard to predict behavior • Overshoots • Wiggles • Hard to get “nice-looking” curves

21. Approximating Splines • “Influenced” by control points but not necessarily go through them. • Various types & techniques • Most common: (Piecewise) Polynomial Functions • Most common of those: • Bézier • B-spline • Each has good properties • We’ll focus on Bézier splines

22. What is a curve, anyway? • We draw it, think of it as a thing existing in space • But mathematically we treat it as a function, x(t) • Given a value of t, computes a point x • Can think of the function as moving a point along the curve x(t) z x(0.0) x(0.5) x(1.0) y y x

23. The tangent to the curve • Vector points in the direction of movement • (Length is the speed in the direction of movement) • Also a function of t, x(t) z x’(0.0) x’(0.5) x’(1.0) y y x

24. Polynomial Functions • Linear: (1st order) • Quadratic: (2nd order) • Cubic: (3rd order)

25. Point-valued Polynomials (Curves) • Linear: (1st order) • Quadratic: (2nd order) • Cubic: (3rd order) • Each is 3 polynomials “in parallel”: • We usually define the curve for 0 ≤t≤ 1

26. How much do you need to specify? • Two points define a line (1st order) • Three points define a quadratic curve (2nd order) • Four points define a cubic curve (3rd order) • k+1 points define a k-order curve • Let’s start with a line…

27. Linear Interpolation • Linear interpolation, AKA Lerp • Generates a value that is somewhere in between two other values • A ‘value’ could be a number, vector, color, … • Consider interpolating between two points p0 and p1 by some parameter t • This defines a “curve” that is straight. AKA a first-order spline • When t=0, we get p0 • When t=1 we get p1 • When t=0.5 we get the midpoint . p1 t=1 . p0 0<t<1 t=0

28. Linear interpolation • We can write this in three ways • All exactly the same equation • Just different ways of looking at it • Different properties become apparent

29. Linear interpolation as weighted average • Each weight is a function of t • The sum of the weights is always 1, for any value of t • Also known as blending functions

30. Linear interpolation as polynomial • Curve is based at point p0 • Add the vector, scaled by t . p1-p0 . . p0 .5(p1-p0)

31. Linear interpolation in matrix form

32. Linear Interpolation: tangent • For a straight line, the tangent is constant

33. Outline for today • Inverses of Transforms • Curves overview • Bézier curves

34. Bézier Curves • Can be thought of as a higher order extension of linear interpolation p1 p1 p2 p1 p3 p0 p0 p0 p2 Linear Quadratic Cubic

35. Cubic Bézier Curve • Most common case • 4 points for a cubic Bézier • Interpolates the endpoints • Midpoints are “handles” that control the tangent at the endpoints • Easy and intuitive to use • Many demo applets online • http://www.cs.unc.edu/~mantler/research/bezier/ • http://www.theparticle.com/applets/nyu/BezierApplet/ • http://www.sunsite.ubc.ca/LivingMathematics/V001N01/UBCExamples/Bezier/bezier.html • Convex Hull property • Variation-diminishing property

36. Bézier Curve Formulation • Ways to formulate Bézier curves, analogous to linear: • Weighted average of control points -- weights are Bernstein polynomials • Cubic polynomial function of t • Matrix form • Also, the de Casteljau algorithm: recursive linear interpolations • Aside: Many of the original CG techniques were developed for Computer Aided Design and manufacturing. • Before games, before movies, CAD/CAM was the big application for CG. • Pierre Bézier worked for Peugot, developed curves in 1962 • Paul de Casteljau worked for Citroen, developed the curves in 1959

37. Bézier Curve • Find the point x on the curve as a function of parameter t: p1 • x(t) p0 p2 p3

38. de Casteljau Algorithm • A recursive series of linear interpolations • Works for any order. We’ll do cubic • Not terribly efficient to evaluate this way • Other forms more commonly used • So why study it? • Kinda neat • Intuition about the geometry • Useful for subdivision (later today)

39. de Casteljau Algorithm • Start with the control points • And given a value of t • In the drawings, t≈0.25 p1 p0 p2 p3

40. de Casteljau Algorithm p1 q1 q0 p0 p2 q2 p3

41. de Casteljau Algorithm q1 r0 q0 r1 q2

42. de Casteljau Algorithm r0 • x r1

43. p1 • x p0 p2 p3 de Casteljau algorihm • Applets • http://www2.mat.dtu.dk/people/J.Gravesen/cagd/decast.html • http://www.caffeineowl.com/graphics/2d/vectorial/bezierintro.html

44. Recursive Linear Interpolation

45. Expand the Lerps

46. Weighted average of control points • Group this as a weighted average of the points:

47. Bézier using Bernstein Polynomials • Notice: • Weights always add to 1 • B0 and B3go to 1 -- interpolating the endpoints

48. General Bernstein Polynomials

49. General Bézier using Bernstein Polynomials • Bernstein polynomial form of an nth-order Bézier curve:

50. p3 p1 p0 p2 Convex Hull Property • Construct a convex polygon around a set of points • The convex hullof the control points • Any weighted average of the points, with the weights all between 0 and 1: • Known as a convex combination of the points • Result always lies within the convex hull (including on the border) • Bézier curve is a convex combination of the control points • Curve is always inside the convex hull • Very important property! • Makes curve predictable • Allows culling • Allows intersection testing • Allows adaptive tessellation