Loading [MathJax]/jax/output/CommonHTML/jax.js

cubic Bezier 곡선은 네 개의 컨트롤 점 (P0,P1,P2,P3)이용해서 표현한다:

B(t)=(1t)3P0+3(1t)2tP1+3(1t)t2B2+t3P3.0t1B(0)=P0,  B(1)=P3

만약 곡선이 충분히 평탄하다면 굳이 삼차 다항식을 계수로 가지는 Bezier 곡선으로 표현할 필요가 없이P0와  P3을 잇는 직선으로 근사하는 것이 여러모로 유리할 것이다. 그러면 Bezier 곡선의 평탄성을 어떻게 예측할 것인가? 이는 cubic Bezier 곡선 B(t)와 시작점과 끝점을 연결하는 직선 L(t)=(1t)P0+tP3와의 차이를 비교하므로 판단할 수 있다.

 

직선도 cubic Bezier 곡선 표현으로 할 수 있다. 시작점이 P0이고 끝점이 P3일 때 이 둘 사이를 3 등분하는 두 내분점 (2P0+P3)/3, (P0+2P3)/3을 control point에 포함시키면,

L(t)=(1t)3P0+(1t)2t(2P0+P3)+(1t)t2(P0+2P3)+t3P3

처럼 쓸 수 있다. Bezier 곡선과 직선의 차이를 구하면

Δ(t)=|B(t)L(t)|=|(1t)2t(3P12P0P3)+(1t)t2(3P2P02P3)|=3(1t)t|(1t)U+tV|,U=P113(2P0+P3),V=P213(P0+2P3)

그런데 

max{3(1t)t}=34,0t1,max{|(1t)U+tV|}=max{|U|,|V|}

이므로 아래와 같은 벗어난 거리의 상한 값을 얻을 수 있다:

Δ(t)34max{|U|,|V|}

이 상한값이 주어진 임계값보다 작으면 3차 Bezier 곡선은 두 끝점을 잇는 직선으로 근사할 수 있다. 좀 더 기하학적으로 표현하면

|U|=P1에서 왼쪽 3등분 내분점까지 거리

|V|=P2에서 오른쪽 3등분 내분점까지 거리

이므로,

Δ(t)34×(control point와 3등분 내분점 간의 거리의 최댓값).

 
 
 
 
 
 
 
 
728x90

'Computational Geometry' 카테고리의 다른 글

B-Spline  (1) 2021.04.25
Bezier Smoothing  (0) 2021.04.23
Convexity of Bezier Curve  (0) 2021.04.22
De Casteljau's Algorithm  (0) 2021.04.22
Arc Length of Bezier Curves  (0) 2021.04.21
,