11 — 파라메트릭 곡선 (Parametric Curves)

출처: SSU 컴퓨터 그래픽스 슬라이드 — SSU_Intro2CG_11_ParametricCurves.pdf 주차: 10~11주차 선행: 10 — 래스터화 (선형 보간)

직선만으로는 표현할 수 없는 매끄러운 곡선을, 소수의 제어점과 3차 다항식으로 정의하는 방법. Hermite → Catmull-Rom → Bezier → B-Spline → NURBS 로 갈수록 제어의 직관성과 표현력이 올라갑니다. 모든 곡선은 결국 같은 틀 기저행렬 M 차이일 뿐입니다.


1. 파라메트릭 표현과 3차 다항식

출처: 슬라이드 — Parametric Curves and Surfaces / Curve Formulation

곡선을 매개변수 (보통 )의 함수로 표현합니다:

각 좌표는 임의의 함수가 될 수 있지만, 3차(cubic) 다항식을 주로 씁니다.

왜 3차인가: 1·2차는 표현력이 부족하고, 4차 이상은 연산이 비싸고 불필요한 흔들림(wiggle)이 생김. 3차가 유연성과 비용의 균형점.

1.1 행렬 형태 ⭐️

3차식을 행렬로 묶으면 곡선 종류를 기저행렬 M기하행렬 G 로 분리할 수 있습니다.

  • 기저행렬 M: 곡선 종류마다 고정된 상수 행렬 (Hermite/Bezier/B-spline 마다 다름).
  • 기하행렬 G: 그 곡선에 넣는 실제 제어 데이터 (점·접선 등).

이 한 줄이 이 장 전체의 뼈대입니다. 모든 곡선은 M 만 다르다.


2. 연속성 (Continuity)

출처: 슬라이드 — Continuity / Curve Continuity

여러 곡선 조각을 이어 붙일 때 이음새가 얼마나 매끄러운가:

등급조건의미
C⁰위치(값)가 연속점은 만나지만 꺾일 수 있음
1차 도함수(접선)가 연속꺾임 없이 부드럽게 이어짐
2차 도함수(곡률)가 연속곡률까지 매끄러움

대부분의 응용에서는 C¹ 또는 C² 면 충분합니다.

2.1 보간 vs 근사 ⭐️

  • 보간 (Interpolation): 곡선이 모든 제어점을 지나간다 (데이터 일치). → Hermite, Catmull-Rom.
  • 근사 (Approximation): 제어점을 반드시 지나지는 않고 끌어당기기만 한다 (디자인). → Bezier, B-Spline.

2.2 설계 시 선택지

  • 보간 vs 근사
  • 연속성 등급
  • 계산 복잡도
  • 지역 제어(local) vs 전역 제어(global) — 한 점을 옮길 때 곡선 전체가 변하는가, 근처만 변하는가.

3. Hermite 곡선 ⭐️

출처: 슬라이드 — Hermite Curves

가장 기본적인 3차 곡선. 4개의 기하 정보로 정의합니다:

  1. 시작점
  2. 끝점
  3. 시작점에서의 접선 벡터
  4. 끝점에서의 접선 벡터

3.1 유도

경계조건 을 대입:

이 네 식을 풀면 a, b, c, d 가 네 기하정보로 표현되고 → Hermite 기저행렬이 나옵니다.

3.2 블렌딩 함수 (Blending Functions)

각 제어 정보가 곡선에 기여하는 정도를 나타내는 함수. 4개의 3차 블렌딩 함수가 위치/접선 기여를 섞습니다.

Hermite Curve — 끝점 2개 + 접선 2개

drag

시작점 P₀·끝점 P₁ 과 두 점에서의 접선 T₀·T₁ 네 가지로 정의됩니다. 점·접선 손잡이(◇)를 드래그하고, 아래 u 슬라이더를 움직여 곡선 위 점(●)과 네 기저함수 hᵢⱼ(u) 가 어떻게 변하는지 보세요.

u=0.35P0P1
기저함수 hᵢⱼ(u), u 위치 표시
h₀₀×P₀0.718
h₁₀×T₀0.148
h₀₁×P₁0.282
h₁₁×T₁-0.080
위치 기저 h₀₀+h₀₁1.000 = 1
0.35
행렬형
P₀, P₁ — 끝점 (곡선이 통과)
T₀, T₁ — 접선 (손잡이 ◇)
u 위치의 곡선 점
시험 포인트: 이면 나머지 0 → , 이면 (끝점 통과). 시작 접선 , 끝 접선 . 위치 기저 (항상).

3.3 C¹ 연속으로 잇기

두 Hermite 곡선을 부드럽게(C¹) 이으려면:

  • 앞 곡선의 끝점 = 뒤 곡선의 시작점 (위치 일치, C⁰)
  • 앞 곡선의 끝 접선 = 뒤 곡선의 시작 접선 (접선 일치, C¹)

4. Catmull-Rom 스플라인 ⭐️

출처: 슬라이드 — Catmull-Rom Spline

Hermite 의 불편함(접선을 일일이 지정)을 없앤 보간 스플라인.

  • 모든 제어점을 통과 (interpolating)
  • C¹ 연속
  • 각 점에서의 접선을 이웃 두 제어점으로 자동 계산:
  • 양 끝점의 접선만 따로 지정
  • 그리기·편집이 쉬움 → 애니메이션 경로(path) 이동에 자주 사용

핵심 차별점: Hermite 는 접선을 사람이 주지만, Catmull-Rom 은 이웃 점에서 접선을 만들어 준다.

Catmull-Rom — 모든 점 통과 + 자동 접선

drag

곡선은 모든 제어점을 통과(보간)하고, 각 점 접선은 이웃으로 자동 생성됩니다 — Tᵢ = ½(Pᵢ₊₁ − Pᵢ₋₁). u 슬라이더로 활성 구간(진한 곡선)과 4개 기저 cᵢ(u) 를 보세요.

P0P1P2P3P4
기저 cᵢ(u) — 활성 구간
c₀×P0-0.072
c₁×P10.696
c₂×P20.424
c₃×P3-0.048
Σ cᵢ (partition of unity)1.000 = 1
1.40
접선 자동 생성: → 구간마다 Hermite 로 보간.
활성 구간 접선(현재): T_1=(80, 10), T_2=(88, 5)
4점 블렌딩:
P₀…Pₙ — 제어점 (전부 통과)
자동 접선 Tᵢ = ½(Pᵢ₊₁ − Pᵢ₋₁)
Catmull-Rom (활성 구간 진하게)
시험 포인트: 나머지 0 → (점을 통과!), . 네 기저 합은 항상 (partition of unity). Hermite와 달리 접선을 사람이 줄 필요가 없어 애니메이션 경로에 자주 씁니다.

5. Bezier 곡선 ⭐️⭐️

출처: 슬라이드 — Bézier Curves

그래픽스/CAD 에서는 보통 도함수(접선) 데이터가 없습니다. Pierre Bézier 는 접선 대신 점으로 접선을 암시하자고 제안했습니다.

5.1 4개의 점으로 지정

  • : 곡선의 시작점 (통과)
  • : 곡선의 끝점 (통과)
  • : 시작점의 접선을 결정하는 점 (통과 안 함)
  • : 끝점의 접선을 결정하는 점 (통과 안 함)

Hermite 와의 관계: 접선 를 직접 주는 대신 두 추가 제어점 P2, P3 를 주는 것. 둘은 서로 변환 가능.

Cubic Bézier — De Casteljau

4주차
0.50
제어점(자주색·검정)을 드래그하여 곡선 모양을 바꿔보세요. 파란 점은 1차 보간, 분홍 점은 2차 보간, 보라 점이 최종 베지어 곡선 위의 점입니다 — 이것이 De Casteljau 알고리즘.

5.2 Bernstein 다항식 (블렌딩 함수)

Bezier 의 블렌딩 함수는 Bernstein 다항식의 특수형이며, 임의 차수로 일반화됩니다. 성질:

  • 양 끝(0, 1)에서 0 (양 끝 제어점 제외)
  • 모두 합하면 항상 1 (partition of unity)
  • 구간 (0,1) 안에서 모두 0~1 사이 → 곡선이 제어점 밖으로 튀지 않음.

5.3 볼록 껍질 성질 (Convex Hull Property) ⭐️

Bernstein 다항식의 성질 때문에, Bezier 곡선은 항상 제어점들의 볼록 껍질(convex hull) 안에 놓입니다. → 제어점을 다 지나지 않아도 곡선이 제어점에서 크게 벗어나지 않음을 보장.

5.4 De Casteljau 구성법

곡선 위 한 점을 재귀적 선형 보간으로 구하는 기하학적 방법. 위 BezierVisualizer 의 보조선(lerp 중첩)이 바로 De Casteljau 과정입니다. 임의 차수로 확장 가능.

5.5 Bezier 잇기 (C¹)

두 Bezier 곡선을 C¹ 으로 이으려면, 앞 곡선의 끝 두 점과 뒤 곡선의 첫 두 점이 한 직선 위에 같은 간격으로 놓여야 합니다.


6. B-Spline ⭐️

출처: 슬라이드 — B-Splines

Basis spline. 보간이 아닌 근사 곡선이며, 조각 간 C² 연속.

항목내용
연속성 (Bezier/Hermite 의 C¹ 보다 매끄러움)
대가곡선은 3배, 곡면은 9배의 연산량
제어지역 제어 (local control) — 한 제어점을 옮기면 근처 구간만 변함
경계볼록 껍질 성질 만족 (더 강한 형태)

6.1 매듭(knot)과 구간

  • 조각 는 제어점 로 결정.
  • 매개변수 구간을 순차적으로 두어, 조각 .
  • 조각 사이 이음점을 매듭(knot) 이라 부르고, 매듭이 등간격이면 uniform B-spline.

Cubic B-Spline — 근사 + 지역 제어

drag

곡선은 점을 통과하지 않고 끌어당기기만(근사) 합니다. 각 구간은 연속한 4개 제어점만 쓰므로 한 점을 옮기면 근처 구간만 변합니다(지역 제어). u 슬라이더로 활성 구간과 기저 bᵢ(u) 를 보세요.

P0P1P2P3P4P5
기저 bᵢ(u) — 활성 구간
b₀×P10.036
b₁×P20.539
b₂×P30.415
b₃×P40.011
Σ bᵢ (partition of unity)1.000 = 1
1.40
4점 블렌딩:
P₀…Pₙ — 제어점 (통과 안 함)
제어 다각형
B-Spline (활성 구간 진하게, C²)
시험 포인트: 네 기저 합은 항상 이라 곡선은 4개 제어점의 가중평균 → convex hull 안. 에서도 제어점을 지나지 않음(근사). 한 점은 최대 4개 구간에만 영향 = 지역 제어, 연속성 .

6.2 지역 제어의 의미

제어점 하나를 옮겨도 곡선 전체가 아니라 그 근처만 변합니다. → 세밀한 형상 편집에 유리. (Bezier 는 한 점을 옮기면 곡선 전체가 영향받음 = 전역 제어.)

6.3 한계

B-spline(다항식)은 원·타원 같은 원뿔곡선(conic)을 정확히 표현하지 못합니다. → NURBS 가 필요한 이유.


7. NURBS

출처: 슬라이드 — NURBS

Non-Uniform Rational B-Spline. 다항식의 비(ratio) 를 쓰는 유리(rational) 곡선.

  • 가중치(weight) 가 있는 제어점들 + 매듭 벡터(knot vector) 로 정의.
  • 차수 = 차수(order) − 1 (order 4 → 3차).
  • B-spline 과 Bezier 를 모두 일반화한 형태.
  • 가중치를 전부 1 로 두면 → 일반 B-spline 이 됨.
  • 원뿔곡선(원·타원)을 정확히 표현 가능 ← B-spline 이 못 하던 것.
  • Non-uniform: 매듭 간격이 불균등할 수 있어(예: {0, 1, 2, 3.75, 4, 4.25, 6, 7}) 특정 구간에 제어를 집중.

NURBS 핵심 — 가중치로 원뿔곡선 만들기

rational

NURBS의 핵심은 제어점마다 붙는 가중치(weight)입니다. 가중 유리(rational) 식이라 다항식 B-Spline이 못 하던 원·타원 같은 원뿔곡선을 정확히 표현합니다. 가운데 점 P₁의 가중치 w를 바꿔보세요.

P0P1 (w=1.00)P2
1.00
현재 곡선
포물선 (parabola)
w → 0
직선(현)에 근접
w ≈ 0.71
원호 (90°)
w = 1 → 일반 (유리가 아닌) Bezier = 포물선. w < 1 → 곡선이 P₁에서 멀어짐(타원). w > 1 → P₁ 쪽으로 끌려감(쌍곡선). 모든 가중치를 1로 두면 NURBS는 일반 B-Spline이 됩니다 — 그래서 Bezier ⊂ B-Spline ⊂ NURBS.
P₀, P₂ — 끝점 (w=1 고정)
P₁ — 가중 제어점 (크기 = w)
NURBS (유리 곡선)

곡선 위계 정리: Hermite/Bezier ⊂ B-spline ⊂ NURBS. NURBS 가 가장 일반적이고 표현력이 크다.


📝 Knowledge Check: 파라메트릭 곡선

Quiz

Parametric Curves

Q 1 / 9

공통 틀 P(u) = U·M·G 에서 곡선의 '종류'를 결정하는 것은?


🔗 다음 학습