최근 수정 시각 : 2024-03-09 17:49:07

베지에 곡선

베지어의 곡선에서 넘어옴
1. 소개2. 이름과 역사3. 정의
3.1. 2차 베지에 곡선3.2. 3차 베지에 곡선3.3. n차 베지에 곡선
4. 성질5. 활용

Bézier curve

1. 소개

프랑스의 공학자 피에르 베지에(Pierre Bézier)의 이름을 딴 곡선. 영어식으로 베지어 곡선으로 읽기도 한다. 2개 이상의 점으로 정의되는 매개변수 곡선이며, 점 몇개로 곡선을 특정할 수 있는 성질 때문에 CAD, 컴퓨터 그래픽컴퓨터 환경, 특히 벡터 그래픽에서 곡선을 표현하는 데 널리 쓰인다.

2. 이름과 역사

피에르 베지에(Pierre Bézier)의 이름을 따기는 했지만 그가 이 곡선을 고안한 것은 아니고, 수학적 기반인 번스타인 다항식[1]은 1912년에 만들어져 있었다. 그것을 곡선 형태로 실제 사용한 것은 프랑스의 수학자인 폴 카스텔조(Paul de Casteljau)[2]로, 1959년 즈음 시트로엥에서 일하면서 현재 형태의 베지에 곡선을 수치적으로 계산해내는 알고리즘[3]을 고안해 컴퓨터를 기반으로 한 설계에 활용했다.

피에르 베지에는 1960년대에 르노에서 일하면서 마찬가지로 번스타인 다항식을 기반으로 한 곡선, 그리고 그것을 컴퓨터에서 사용하기 위한 이런저런 아이디어 등을 만들어냈는데, 특허를 내는 등 카스텔조에 비해 자기 성과를 널리 알렸기 때문에 해당 곡선에는 베지에의 이름이 붙게 되었다.

3. 정의

베지에 곡선(Bezier curve) 하나를 정의하는 데는 2개 이상의 점이 필요한데, 이 점을 control point라 한다. 한국어로는 조절점, 조정점, 제어점 등의 여러 번역어가 있는데 여기서는 조절점을 쓰기로 하자.

[math(n)]개의 조절점으로 이루어진 베지에 곡선을 [math(n-1)]차 베지에 곡선이라고 한다. 예를 들어 [math(n)]이 2인, 점 두 개로 이루어진 베지에 곡선은 1차 베지에 곡선이다. 조절점 [math(P_0)]와 [math(P_1)]가 주어졌을 때 1차 베지에 곡선의 매개변수 방정식은 다음과 같다.
[math( \operatorname{B_1}\left( t \right) = \begin{bmatrix} P_0 & P_1 \end{bmatrix} \begin{pmatrix} 1 - t \\ t \end{pmatrix} = \left(1 - t \right) P_0 + t P_1 )]
위의 방정식을 잘 정리하면 직선의 방정식이 된다.

3.1. 2차 베지에 곡선

Quadratic Bézier Curve

조절점 [math(P_0)], [math(P_1)]과 [math(P_2)]가 주어졌을 때 2차 베지에 곡선은 [math(P_0)]와 [math(P_1)]로 정의된 1차 베지에 곡선 위의 점과, [math(P_1)]과 [math(P_2)]로 정의한 1차 베지에 곡선 위의 점을 선형 보간한 것으로 생각할 수 있다. 식으로 표현하면 다음과 같다.
[math( \begin{aligned}
\operatorname{B_2}\left( t \right)
&= \begin{pmatrix} 1 - t & t \end{pmatrix} \begin{bmatrix} P_0 & P_1 \\ P_1 & P_2 \end{bmatrix} \begin{pmatrix} 1 - t \\ t \end{pmatrix} \\
&= \begin{bmatrix} P_0 & P_1 & P_2 \end{bmatrix} \begin{pmatrix} \left( 1 - t \right)^2 \\ 2 \left( 1 - t \right) t \\ t^2 \end{pmatrix} \\
&= (1-t) [(1-t)P_0 + tP_1] + t [(1-t)P_1 + tP_2] \\
&= (1-t)^2 P_0 + 2(1-t)t P_1 + t^2 P_2
\end{aligned} )]
당연하게도 [math(t)]에 대한 이차식의 형태이다.

3.2. 3차 베지에 곡선

Cubic Bézier Curve

3차 베지어 곡선도 아이디어는 똑같다. 점 4개가 주어졌을 때, 앞의 점 3개를 이용하여 2차 베지에 곡선을 생각하고, 뒤의 점 3개를 이용한 2차 베지에 곡선을 생각해서 선형 보간하면 된다. 물론 1차 베지에 곡선 3개를 생각하여 그것들로부터 2차 베지에 곡선 하나를 생각해도 마찬가지일 것이다. 정리하여 식으로 나타내면 다음과 같다.
[math( \begin{aligned}
\operatorname{B_3}\left( t \right)
&= \begin{pmatrix} 1 - t & t \end{pmatrix} \begin{bmatrix} P_0 & P_1 & P_2 \\ P_1 & P_2 & P_3 \end{bmatrix} \begin{pmatrix} \left( 1 - t \right)^2 \\ 2 \left( 1 - t \right) t \\ t^2 \end{pmatrix} \\
&= \begin{bmatrix} P_0 & P_1 & P_2 & P_3 \end{bmatrix} \begin{pmatrix} \left( 1 - t \right)^3 \\ 3 \left( 1 - t \right)^2 t \\ 3 \left( 1 - t \right) t^2 \\ t^3 \end{pmatrix} \\
&= \left( 1 - t \right)^3 P_0 + 3 \left( 1 - t \right)^2 t P_1 + 3 \left( 1 - t \right) t^2 P_2 + t^3 P_3
\end{aligned} )]

3.3. n차 베지에 곡선

이제 대충 감이 왔을 것이다. [math(n)]차 베지에 곡선은 [math([\left( 1 - t \right) + t]^n)] 꼴의 [math(n)]차 완전제곱식을 전개한 형태에 각 항마다 조절점을 곱한 형태로 나타내어지는게 보일 것이다. [math(n)]차 베지에 곡선은 [math(n-1)]차 베지에 곡선으로부터 재귀적으로 나타내거나, 아니면 이항계수를 써서 계수를 구하면 된다.

4. 성질

  • 첫 조절점에서 시작하고 마지막 조절점에서 끝난다.
  • 모든 n차 베지에 곡선은 n보다 큰 m차 베지에 곡선으로 나타낼 수 있다.
  • 곡선 위의 어떤 점을 기준으로든 새로운 베지에 곡선 둘로 나눌 수 있다.
  • 2차 베지에 곡선은 이차곡선이다.
  • 베지에 곡선은 항상 조절점에 의해 만들어지는 볼록껍질(Convex Hull) 내부에 존재한다.

5. 활용

파일:illustrator_bezier.png
어도비 포토샵, 어도비 일러스트레이터어도비 기반 펜 툴의 베지에 곡선. 펜 툴이 베지에 곡선과 직선들을 만들어 연결하는 도구이다. 그림에서 볼 수 있듯 양 끝점과 '핸들' 두 개를 가지고 있는 3차 베지에 곡선이다.덕분에 3.5각형을 만들 수 있게 되었다.

GIMP 에서는 경로 도구에서 사용된다. 양 끝 점과 가운데 점에서 두 개의 핸들을 볼 수 있는데 2차 베지에 곡선 두 개가 사용된 거다. 여기에서 체험해 볼 수 있다.
파일:Bezier_curve00.svg
잉크스케이프에서 제공하는 베지에 곡선 전용툴(단축키 B)의 그래픽 예시
원래 만들어진 목적대로 CAD에서는 필수로 사용한다. 또한 벡터 그래픽을 지원하는 대부분의 프로그램도 2차든 3차든 베지에 곡선을 쓴다.

트루타입 폰트는 2차 베지에 곡선을, 포스트스크립트 등은 3차 베지에 곡선으로 글자의 외곽선을 표현하며, 오픈타입의 경우 둘 중 원하는 것을 쓸 수 있다. 베지에 곡선이 비트맵 폰트가 아닌 외곽선 글꼴을 가능하게 한 근간 기술이다.

osu!에서 곡선 슬라이더를 만들 때, 3점은 원호를 사용하고, 4점 이상부터 n차 베지에 곡선을 사용한다. 3점도 임의로 설정하면 베지에 곡선을 사용하도록 설정할 수 있다. 핸들을 사용하는 방식이 아닌, 베지에 곡선의 점을 하나씩 찍는 방식이다.


[1] https://en.wikipedia.org/wiki/Bernstein_polynomial[2] https://en.wikipedia.org/wiki/Paul_de_Casteljau[3] https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm