Sie sind auf Seite 1von 4

QuadraEc

 Bezier  Curve
•  Curve  
Curves  and  Surfaces     Given:  3  control  points   p 0 , p1, p 2
for  Computer  Graphics   Result:  curve  segment   b 2
Part  2 –  de  Casteljau  Algorithm p1

Yasushi  YAMAGUCHI  
The  University  of  Tokyo,  Japan p0 p2

QuadraEc  Bezier  Curve de  Casteljau  Algorithm


•  Parametric  Curve   •  QuadraEc  Bezier  Curve  
Given:  3  control  points      p    0    ,    p    1    ,  p
     2    ,  value  t –  Repeated  linear  interpolaEon  
Result:  point  on  a  curve   b 2 (t ) b10 (t ) = (1 − t )p 0 + tp1
p1
b11 (t ) = (1 − t )p1 + tp 2
0 1 b 02 (t ) = (1 − t )b10 (t ) + tb11 (t )
t < 0 t=0 t=0.25t=0.5 t=1 t > 1 –  Superscript:  recursion  level  (degree)  
b2(t)
p0 b (t)
2
p2
–  Subscript:    index  (in  a level)
b2(t) b2(t) 2
b2(t) b2(t) b 02 (t ) = (1 − t ) p 0 + 2t (1 − t )p1 + t 2p 2

de  Casteljau  Algorithm de  Casteljau  Algorithm


•  QuadraEc  Bezier  Curve   •  QuadraEc  Bezier  Curve  
p1 p1
1
b (t ) = (1− t ) p 0 + tp1
0 b10 (t ) = (1− t ) p 0 + tp1
1 1
b (t ) = (1− t ) p1 + tp 2
1 b (t ) = (1− t ) p1 + tp 2
1
b11(t)
b01(t) b11(t)
b 20 (t ) = (1− t ) b10 (t ) + tb11 (t ) b 20 (t ) = (1− t ) b10 (t ) + tb11 (t ) b01(t)
b02(t) b02(t)
p0 p2 p0 p2

0 1 0 1

t=0.5 t=0.25
de  Casteljau  Algorithm de  Casteljau  Algorithm
•  QuadraEc  Bezier  Curve   •  QuadraEc  Bezier  Curve  
1
b (t ) = (1− t ) p 0 + tp1 b (t) p1
1
1 b10 (t ) = (1− t ) p 0 + tp1 p1
0
b01(t)
1 1
b (t ) = (1− t ) p1 + tp 2
1 b (t ) = (1− t ) p1 + tp 2
1
2 1 1
b (t ) = (1− t ) b (t ) + tb (t )
0 0 1 b 20 (t ) = (1− t ) b10 (t ) + tb11 (t )
p0 p2 p0 p2
b01(t) = b02(t) b11(t) = b02(t)

0 1 0 1

t=0 t=1

de  Casteljau  Algorithm de  Casteljau  Algorithm


p1 =b (t) =b (t)
1
1
2
1
p3 p1 p3
•  Cubic  Bezier  Curve •  Cubic  Bezier  Curve b (t)1
1

1 1 b12(t)
b (t ) = (1− t ) p 0 + tp1
0 b (t ) = (1− t ) p 0 + tp1
0
b (t)
2
0

b11 (t ) = (1− t ) p1 + tp 2 b11 (t ) = (1− t ) p1 + tp 2 b01(t) b03(t)


1 1 b21(t)
b (t ) = (1− t ) p 2 + tp3
2 b (t ) = (1− t ) p 2 + tp3
2
p0 =b01(t) =b02(t) =b03(t) p2 =b21(t) p0 p2
2 1 1 2 1 1
b (t ) = (1− t ) b (t ) + tb (t )
0 0 1
0 1 b (t ) = (1− t ) b (t ) + tb (t )
0 0 1
0 1
2 1
b (t ) = (1− t ) b (t ) + tb (t ) 1 t=0 2 1
b (t ) = (1− t ) b (t ) + tb (t )1 t=0.25
1 1 2 1 1 2

b30 (t ) = (1− t ) b 20 (t ) + tb12 (t ) b30 (t ) = (1− t ) b 20 (t ) + tb12 (t )

de  Casteljau  Algorithm de  Casteljau  Algorithm


p1 p3 p1 p3
•  Cubic  Bezier  Curve •  Cubic  Bezier  Curve
b01(t)
1 1
b12(t) b21(t)
b (t ) = (1− t ) p 0 + tp1
0 b01(t) b11(t) b (t ) = (1− t ) p 0 + tp1
0 b03(t)
b02(t) b03(t) b12(t) b21(t)
b11 (t ) = (1− t ) p1 + tp 2 b11 (t ) = (1− t ) p1 + tp 2 b02(t)

b12 (t ) = (1− t ) p 2 + tp3 b12 (t ) = (1− t ) p 2 + tp3 b11(t)

p0 p2 p0 p2
2 1 1 2 1 1
b (t ) = (1− t ) b (t ) + tb (t )
0 0 1
0 1 b (t ) = (1− t ) b (t ) + tb (t )
0 0 1
0 1

b12 (t ) = (1− t ) b11 (t ) + tb12 (t ) t=0.5 b12 (t ) = (1− t ) b11 (t ) + tb12 (t ) t=0.75

b30 (t ) = (1− t ) b 20 (t ) + tb12 (t ) b30 (t ) = (1− t ) b 20 (t ) + tb12 (t )


de  Casteljau  Algorithm de  Casteljau  Algorithm
p1 =b01(t) p3
•  Cubic  Bezier  Curve =b21(t)
=b12(t) •  Bezier  Curve  of  Degree  n
=b03(t)
  b (t ) = b [p 0 , p1,!, p n ;t ] = b 0 (t )
n n
1
b (t ) = (1− t ) p 0 + tp1
0
3
b11 (t ) = (1− t ) p1 + tp 2 n+1 control  points   p 0 , p1,!, p n ∈ E
p 1
p3

b12 (t ) = (1− t ) p 2 + tp3 Parameter  value   t∈R


b11(t)

p0 p2 =b11(t) =b02(t)   b12(t)


bir (t ) = (1− t ) bir−1 (t ) + tbi+1
r−1
(t ) b (t) 2

  b (t)
0
3
b 20 (t ) = (1− t ) b10 (t ) + tb11 (t ) 0 1 0
where bi (t ) = pi
b (t) 1
0
0

  b21(t)

b12 (t ) = (1− t ) b11 (t ) + tb12 (t ) t=0


p p2
Recursion     r = 1,!, n 0

0 1
b30 (t ) = (1− t ) b 20 (t ) + tb12 (t ) Index     i = 0,!, n − r
t=0.25

ProperEes  of  Bezier  Curve ProperEes  of  Bezier  Curve


•  Invariance  under  Affine  TransformaEon  
•  Affine  Invariance   Φb[p0 , p1 ,!,p n ; t ] = b[Φp0 , Φp1 ,!, Φp n ; t ]
Φb[p0 , p1 ,!,p n ; t ] = b[Φp0 , Φp1 ,!, Φp n ; t ] p1 p2 p2

•  Affine  Parameter  TransformaEon   p1


# u = (b − a) t + a & b[pi; t]
b − u r −1 u − a r −1 Фb[pi; t] p3
bir (u ) = bi (u ) + bi +1 (u ) % ( p1 p2
b−a b−a % u−a (
•  Convex  Hull  Property   %⇔ t=
$
(
b−a ' p0
p3
p0

•  End  Point  InterpolaEon   Фp2 Фp2

b[p0 , p1 ,!,p n ;0] = p0 , b[p0 , p1 ,!,p n ;1] = p n p0


p3 Фp1 Фp1
Фp3 b[Фpi; t] Фp3
•  Approximate  Shape  
Фp0 Фp0

ProperEes  of  Bezier  Curve ProperEes  of  Bezier  Curve


•  Affine  Parameter  TransformaEon  
b − u r −1 u − a r −1 •  Convex  Hull  Property  
bir (u ) = bi (u ) + bi +1 (u )
b−a b−a
p1 p3 p1 p2 p1
b (u)
1
1

b12(u)
p3
b02(u)
b01(u) b03(u)
b21(u) p2
p0 p2 p3
0 1 u = (b − a) t + a p0 p0
t b−u u−a
⇔ 1− t = , t=
a b
b−a b−a Demo
u
ProperEes  of  Bezier  Curve ProperEes  of  Bezier  Curve
•  End  Point  InterpolaEon  
•  Affine  Invariance  
b[p0 , p1 ,!,p n ;0] = p0 , b[p0 , p1 ,!,p n ;1] = p n
Φb[p0 , p1 ,!,p n ; t ] = b[Φp0 , Φp1 ,!, Φp n ; t ]
•  Approximate  Shape  (Control  Polygon)  
•  Affine  Parameter  TransformaEon  
p1 p2 p1 b − u r −1 u − a r −1 # u = (b − a) t + a &
bir (u ) = bi (u ) + bi +1 (u ) % (
b−a b−a % u−a (
p3 •  Convex  Hull  Property   %⇔ t=
$
(
b−a '
•  End  Point  InterpolaEon  
p2 b[p0 , p1 ,!,p n ;0] = p0 , b[p0 , p1 ,!,p n ;1] = p n
p3
p0 p0 •  Approximate  Shape  (Control  Polygon)  
Demo

Das könnte Ihnen auch gefallen