3차 베지어 곡선

3차 베지어 곡선 그리기

3차 베지어 곡선은 단지 두개의 2차 베지어 곡선을 혼합한 것입니다. 앞서 배웠던 1차 베지어 곡선에는 t와 1 - t만 있었으며, 2차 베지어 곡선에는 t제곱이 있었습니다. 여기서는 "3차"라는 의미의 세제곱을 볼 수 있을 겁니다.

A, B, C, D 라는 네개의 조절점이 있습니다. 3개의 1차 베지어 곡선도 있죠 : AB, BC, CD 2개의 2차 베지어 곡선도 있습니다 : ABC, BCD

2차 베지어 곡선에서 했던 것 처럼 t라는 손잡이를 돌려가며 똑같이 그려보겠습니다. 모든 구간에서 "t" 하나로 동시에 보간하는 것입니다.

E는 AB를 따라 보간됩니다.

F는 BC를 따라 보간됩니다.

G는 CD를 따라 보간됩니다.

앞의 기억을 떠올리며 EF, FG를 따라 보간해 봅시다.

Q는 EF를 따라서 보간됩니다. R은 FG를 따라 보간됩니다. 이 모든 계산이 동시에 이루어 져야 한다는것을 명심하세요.

이제 우리가 최종적으로 원하는 좌표인 점 P를 계산해보겠습니다. 이전 방식과 다르지 않기 때문에 어려울건 없습니다.

P는 QR을 따라서 보간됩니다(E,F,G,Q,R을 동시에 보간합니다). P가 어디로 향하고 있는지 다시 한번 살펴보세요.

가이드 포인트

3차 베지어 곡선에도 2차 베지어 곡선처럼 가이드 포인트가 존재합니다.

P는 A에서 시작하고 D에서 끝납니다. B 와 C는 절대 지나가지 않습니다. 따라서 B, C를 가이드 포인트라고 부릅니다.

3차 베지어 곡선은 단지 두개의 2치 베지어 곡선을 혼합한 것입니다. 다르게 보면 세개의 1차 베지어 곡선을 혼합한 것이죠. 따라서 수학적인 내용은 전혀 어렵지 않습니다. (1차 베지어 방정식을 혼합하고, 혼합하고...하면 됩니다)

3차 베지어 곡선의 방정식

2차 베지어 곡선에서 했던 것 처럼 3차 베지어 곡선도 방정식으로 표현해 보겠습니다.

AB, BC, CD 세개의 1차 베지어 곡선 위에 계산되는 각 점들은 다음 수식으로 나타낼 수 있습니다.

E(t)=sA+tBE(t) = sA + tB
F(t)=sB+tCF(t) = sB + tC
G(t)=sC+tDG(t) = sC + tD

E, F, G가 또다른 1차 베지어 곡선을 두개 만들어 내는데 마찬가지로 이 위의 점들(Q, R)도 다음 수식으로 나타낼 수 있습니다.

Q(t)=sE+tFQ(t) = sE + tF
R(t)=sF+tGR(t) = sF + tG

마지막으로 Q와 R이 또다른 1차 베지어 곡선을 만들어 냈습니다. 이 위의 점 P도 똑같은 수식으로 나타낼 수 있습니다.

P(t)=sQ+tRP(t) = sQ + tR

모두 정리해 보면 아래와 같은 수식으로 표현됩니다.

1차 베지어(A와 B, B와 C, C와 D의 혼합)

E(t)=sA+tBE(t) = sA + tB
F(t)=sB+tCF(t) = sB + tC
G(t)=sC+tDG(t) = sC + tD

2차 베지어(E와 F의 혼합, F와 G의 혼합)

Q(t)=sE+tFQ(t) = sE + tF
R(t)=sF+tGR(t) = sF + tG

3차 베지어(Q와 R의 혼합)

P(t)=sQ+tRP(t) = sQ + tR

2차 베지어 곡선에서 했던 대로 Q와 R자리에 수식을 풀어서 넣어 보면 모든 규칙에 대한 하나의 방정식을 얻을 수 있습니다.

P(t)=(s3)A+3(s2t)B+3(st2)C+(t3)DP(t) = (s^3)A + 3(s^2t)B + 3(st^2)C + (t^3)D

여기에서 "3차"를 의미하는 세제곱을 볼 수 있군요.

하지만, 저는 개인적으로 위 수식 보다는 아래와 같은 표현을 더 좋아합니다.

E(t)=sA+tBE(t) = sA + tB
F(t)=sB+tCF(t) = sB + tC
G(t)=sC+tDG(t) = sC + tD
Q(t)=sE+tFQ(t) = sE + tF
R(t)=sF+tGR(t) = sF + tG
P(t)=sQ+tRP(t) = sQ + tR

게다가, 이런 방식은 계산속도도 더 빠를 거라고 생각합니다!

4차, 5차 베지어 곡선

3차에서 멈출필요는 없습니다. 4차, 5차 베지어 곡선도 얼마든지 만들 수 있죠.

4차 베지어 곡선은 단지 두개의 3차 베지어 곡선을 혼합한 것입니다.

5차 베지어 곡선은 단지 두개의 4차 베지어 곡선을 혼합한 것입니다.

하지만, 저는 3차 베지어 곡선으로 만족하기로 했습니다. 왜냐하면 3차 베지어 곡선만으로도 원하는 모든 제어를 할 수 있음을 발견했기 때문이죠. 더 높은 차수의 곡선(4차, 5차)은 특별히 따질 필요는 없을것 같습니다.

파스칼의 삼각형

지금까지 살펴봤던 세개의 베지어 방정식을 비교해 봅시다.

Linear = 1차

Linear(t)=(s)A+(t)BLinear( t ) = (s)A + (t)B

Quadratic = 2차

Quadratic(t)=(s2)A+2(st)B+(t2)CQuadratic( t ) = (s^2)A + 2(st)B + (t^2)C

Cubic = 3차

Cubic(t)=(s3)A+3(s2t)B+3(st2)C+(t3)DCubic( t ) = (s^3)A + 3(s^2t)B + 3(st^2)C + (t^3)D

무언가 대칭적인게 있습니다.

숫자 계수들을 녹색으로 표시해 보겠습니다.

빨간색으로 표시한 s의 지수들은 점점 작아집니다.

파란색으로 표시한 t의 지수들은 점점 커집니다.

숫자 계수들은 파스칼의 삼각형과 같은 모양이 됩니다. 이런 규칙성을 보면 4차, 5차 방정식은 어떻게 될지 쉽게 알아낼 수 있을 겁니다.

t = 0.5 인 경우를 계산해 보면 다음과 같이 나옵니다.

P(t)=(s3)A+3(s2t)B+3(st2)C+(t3)DP(t) = (s^3)A + 3(s^2t)B + 3(st^2)C + (t^3)D

계산해 보면,

P(t)=(.53)A+3(.52.5)B+3(.5.52)C+(.53)DP(t) = (.5^3)A + 3(.5^2 * .5)B + 3(.5 * .5^2)C + (.5^3)D

계산해 보면,

P(t)=(.125)A+3(.125)B+3(.125)C+(.125)DP(t) = (.125)A + 3(.125)B + 3(.125)C + (.125)D

계산해 보면,

P(t)=.125A+.375B+.375C+.125DP(t) = .125A + .375B + .375C + .125D

역주) 파스칼의 삼각형 부분은 저자가 말하고자 하는 바를 확실히 파악하지 못했습니다. 발표 영상과 함께 보면 더 이해가 쉽지 않았을까 생각합니다.

3차 베지어 곡선의 모양

만약 조절점들이 위 그림처럼 "뒤틀려져" 있다면, 3차 베지어 곡선은 "S자 모양"으로 그려집니다.

이렇게 조절점을 양 끝으로 배치한다면 다시 되돌아 오는 모양도 될 수 있습니다.

Photoshop, GIMP, PostScript, Flash, AfterEffects, 3DS Max, Metafont, Understable Disc Golf flight path등 많은 곳에서 3차 베지어 곡선의 모습을 볼 수 있습니다.

2차, 4차, 5차(Quadratic vs. Quartic vs. Quintic)

Just to clarify – since everyone always seems to get it wrong:

  1. Linear Bezier curves have 2 points (0 guides), and are straight lines with order t1

  2. Quadratic Bezier curves have 3 points (1 guide), with order t2

  3. Cubic Bezier curves have 4 points (2 guides), with order t3

  4. Quartic Bezier curves have 5 points (3 guides), with order t4

  5. Quintic Bezier curves have 6 points (4 guides), with order t5

Note: The fact that Quadratic means “squared” (and not “to the 4th”) is confusing for many folks – and rightfully so.

In geometry, quadra- usually means “four” (e.g. “quadrant”, “quadrilateral”). Similarly, tri- means “three (e.g. “triangle”).

However, in algebra – including polynomial equations (like these), quadratic means “square” or “squared” (as in t2). Likewise, we use cubic to mean “cubed” (as in t3). We use quartic to mean functions of degree four (as in t4), quintic for five (t5) and so on. I know, it sucks.

정확한 번역이 어려워 원문 그대로 올립니다. 기하학에서 사용하는 용어와 대수 방정식에서 사용하는 용어의 차이때문에 혼란이 와 확실히 정리하기 위해 적어놓은 글 같습니다.

Last updated