CSE 167 Lecture Notes - Lecture 10: Mnemonic, Non-Uniform Rational B-Spline
Idea of Blossoms/Polar Forms
Eg quadratic Bezier curve F(u)
- Define “auxiliary” function f(u1,u2) [number of args = degree]
- Points on curve simply have u1 = u2 so that F(u) = f(u,u)
- Label control points and deCasteljau points NOT on curve w/ appropriate values of
(u1,u2)
f(u1,u2) = a u1u2 + b((u1 + u2)/ 2) + C
f is symmetric: f(0,1) = f(1,0)
00 01 11
P0 P1 P2
\/ \/
0u 1u // 1u = u1
\/
Uu
f(0u) = (1-u) f(0,0) + u f(0,1) // Note: 0 interpolated with 1 is u
Note: can ONLY interpolate labels in one step that “defer” in 1 variable (0 -> 1, or 1 -> 0)
Polar Forms: Cubic Bezier Curve
000 001 011 111
\/ \/ \/
00u 0u1 u11 // can rewrite as u(00), u(01), u(11)
\/ \/
0uu 1uu
\/
Uuu
Why Polar Forms?
Simple mnemonic: which points to interpolate and HOW in dC algorithm
Easy to see how to “subdivide” Bezier curve which is useful for drawing recursively
Generalizes to arbitrary “spline” curves (just label control points correctly instead of 00 01 11 for
Bezier curve)
Subdividing Bezier Curves
HW3: subdivide into halves (u = ½)
- Recursively draw EACH piece
- At some tolerance, draw control polygon
- Trivial for Bezier curves
Left curve:
Control points are 000, 00u, 0uu, and uuu
Right curve:
Control points are uuu, uu1, u11, 111
Bezier: Disadvantages
Document Summary
Define auxiliary function f(u1,u2) [number of args = degree] Points on curve simply have u1 = u2 so that f(u) = f(u,u) Label control points and decasteljau points not on curve w/ appropriate values of (u1,u2) // note: 0 interpolated with 1 is u f(u1,u2) = a u1u2 + b((u1 + u2)/ 2) + c f is symmetric: f(0,1) = f(1,0) P0 f(0u) = (1-u) f(0,0) + u f(0,1) Note: can only interpolate labels in one step that defer in 1 variable (0 -> 1, or 1 -> 0) Simple mnemonic: which points to interpolate and how in dc algorithm. Easy to see how to subdivide bezier curve which is useful for drawing recursively. Generalizes to arbitrary spline curves (just label control points correctly instead of 00 01 11 for. Control points are 000, 00u, 0uu, and uuu. Cn continuity - as a function of the parameters, it is continuous.