Bézier curve [목차] == 소개 == 프랑스의 공학자 피에르 베지에(Pierre Bézier)의 이름을 딴 [[곡선]]. 영어식으로 베지어 곡선으로 읽기도 한다. 2개 이상의 점으로 정의되는 [[매개변수]] 곡선이며, 점 몇개로 곡선을 특정할 수 있는 성질 때문에 [[CAD]], [[컴퓨터 그래픽]] 등 [[컴퓨터]] 환경, 특히 [[벡터 그래픽]]에서 곡선을 표현하는 데 널리 쓰인다. == 이름과 역사 == 피에르 베지에(Pierre Bézier)의 이름을 따기는 했지만 그가 이 곡선을 고안한 것은 아니고, 수학적 기반인 번스타인 다항식[* [[https://en.wikipedia.org/wiki/Bernstein_polynomial]]]은 1912년에 만들어져 있었다. 그것을 곡선 형태로 실제 사용한 것은 프랑스의 수학자인 폴 카스텔조(Paul de Casteljau)[* [[https://en.wikipedia.org/wiki/Paul_de_Casteljau]]]로, 1959년 즈음 [[시트로엥]]에서 일하면서 현재 형태의 베지에 곡선을 수치적으로 계산해내는 알고리즘[* [[https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm]]]을 고안해 [[컴퓨터]]를 기반으로 한 설계에 활용했다. 피에르 베지에는 1960년대에 [[르노]]에서 일하면서 마찬가지로 번스타인 다항식을 기반으로 한 곡선, 그리고 그것을 [[컴퓨터]]에서 사용하기 위한 이런저런 아이디어 등을 만들어냈는데, 특허를 내는 등 카스텔조에 비해 자기 성과를 널리 알렸기 때문에 해당 곡선에는 베지에의 이름이 붙게 되었다. == 정의 == 베지에 곡선(Bezier curve) 하나를 정의하는 데는 2개 이상의 점이 필요한데, 이 점을 control point라 한다. 한국어로는 조절점, 조정점, 제어점 등의 여러 번역어가 있는데 여기서는 조절점을 쓰기로 하자. [math(n)]개의 조절점으로 이루어진 베지에 곡선을 [math(n-1)]차 베지에 곡선이라고 한다. 예를 들어 [math(n)]이 2인, 점 두 개로 이루어진 베지에 곡선은 1차 베지에 곡선이다. 조절점 [math(P_0)]와 [math(P_1)]가 주어졌을 때 1차 베지에 곡선의 매개변수 방정식은 다음과 같다. > [math( B(t) = (1-t) P_0 + t P_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( B(t) = (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 )] 당연하게도 [math(t)]에 대한 [[이차곡선|이차식]]의 형태이다. === 3차 베지에 곡선 === cubic Bézier curve. 3차 베지어 곡선도 아이디어는 똑같다. 점 4개가 주어졌을 때, 앞의 점 3개를 이용하여 2차 베지에 곡선을 생각하고, 뒤의 점 3개를 이용한 2차 베지에 곡선을 생각해서 선형 보간하면 된다. 물론 1차 베지에 곡선 3개를 생각하여 그것들로부터 2차 베지에 곡선 하나를 생각해도 마찬가지일 것이다. 정리하여 식으로 나타내면 다음과 같다. > [math( B(t) = (1-t)^3 P_0 + 3(1-t)^2 t P_1 + 3(1-t) t^2 P_2 + t^3 P_3 )] === n차 베지에 곡선 === 이제 대충 감이 왔을 것이다. [math(n)]차 베지에 곡선은 [math([\left( 1 - t \right) + t]^n)] 꼴의 [math(n)]차 [[완전제곱식]]을 전개한 형태에 각 항마다 조절점을 곱한 형태로 나타내어지는게 보일 것이다. [math(n)]차 베지에 곡선은 [math(n-1)]차 베지에 곡선으로부터 [[재귀]]적으로 나타내거나, 아니면 [[이항계수]]를 써서 계수를 구하면 된다. == 성질 == * 첫 조절점에서 시작하고 마지막 조절점에서 끝난다. * 모든 n차 베지에 곡선은 n보다 큰 m차 베지에 곡선으로 나타낼 수 있다. * 곡선 위의 어떤 점을 기준으로든 새로운 베지에 곡선 둘로 나눌 수 있다. * 2차 베지에 곡선은 [[이차곡선]]이다. * 베지에 곡선은 항상 조절점에 의해 만들어지는 볼록껍질(Convex Hull) 내부에 존재한다. == 활용 == [[파일:illustrator_bezier.png]] [[어도비 포토샵]], [[어도비 일러스트레이터]] 등 [[어도비]] 기반 펜 툴의 베지에 곡선. 펜 툴이 베지에 곡선과 직선들을 만들어 연결하는 도구이다. 그림에서 볼 수 있듯 양 끝점과 '핸들' 두 개를 가지고 있는 3차 베지에 곡선이다.[[https://youtube.com/shorts/l_YS-IaIDYg?si=w2-5ofkyataFEf-6|덕분에 3.5각형을 만들 수 있게 되었다.]] [[GIMP]] 에서는 경로 도구에서 사용된다. 양 끝 점과 가운데 점에서 두 개의 핸들을 볼 수 있는데 2차 베지에 곡선 두 개가 사용된 거다. [[https://www.desmos.com/calculator/tnkkdvzkqs|여기]]에서 체험해 볼 수 있다. || [[파일:Bezier_curve00.svg|width=400px]] || || [[잉크스케이프]]에서 제공하는 베지에 곡선 전용툴(단축키 B)의 그래픽 예시 || 원래 만들어진 목적대로 [[CAD]]에서는 필수로 사용한다. 또한 [[벡터 그래픽]]을 지원하는 대부분의 프로그램도 2차든 3차든 베지에 곡선을 쓴다. [[트루타입]] 폰트는 2차 베지에 곡선을, [[포스트스크립트]] 등은 3차 베지에 곡선으로 글자의 외곽선을 표현하며, [[OTF|오픈타입]]의 경우 둘 중 원하는 것을 쓸 수 있다. 베지에 곡선이 [[비트맵]] 폰트가 아닌 외곽선 글꼴을 가능하게 한 근간 기술이다. [[osu!]]에서 곡선 슬라이더를 만들 때, 3점은 [[호(수학)|원호]]를 사용하고, 4점 이상부터 n차 베지에 곡선을 사용한다. 3점도 임의로 설정하면 베지에 곡선을 사용하도록 설정할 수 있다. 핸들을 사용하는 방식이 아닌, 베지에 곡선의 점을 하나씩 찍는 방식이다. [[분류:컴퓨터 그래픽]]