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⁰ | 위치(값)가 연속 | 점은 만나지만 꺾일 수 있음 |
| C¹ | 1차 도함수(접선)가 연속 | 꺾임 없이 부드럽게 이어짐 |
| C² | 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개의 기하 정보로 정의합니다:
- 시작점
- 끝점
- 시작점에서의 접선 벡터
- 끝점에서의 접선 벡터
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) 가 어떻게 변하는지 보세요.
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) 를 보세요.
5. Bezier 곡선 ⭐️⭐️
출처: 슬라이드 — Bézier Curves
그래픽스/CAD 에서는 보통 도함수(접선) 데이터가 없습니다. Pierre Bézier 는 접선 대신 점으로 접선을 암시하자고 제안했습니다.
5.1 4개의 점으로 지정
- : 곡선의 시작점 (통과)
- : 곡선의 끝점 (통과)
- : 시작점의 접선을 결정하는 점 (통과 안 함)
- : 끝점의 접선을 결정하는 점 (통과 안 함)
Hermite 와의 관계: 접선 를 직접 주는 대신 두 추가 제어점 P2, P3 를 주는 것. 둘은 서로 변환 가능.
Cubic Bézier — De Casteljau
4주차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² 연속.
| 항목 | 내용 |
|---|---|
| 연속성 | C² (Bezier/Hermite 의 C¹ 보다 매끄러움) |
| 대가 | 곡선은 3배, 곡면은 9배의 연산량 |
| 제어 | 지역 제어 (local control) — 한 제어점을 옮기면 근처 구간만 변함 |
| 경계 | 볼록 껍질 성질 만족 (더 강한 형태) |
6.1 매듭(knot)과 구간
- 조각 는 제어점 로 결정.
- 매개변수 구간을 순차적으로 두어, 조각 는 .
- 조각 사이 이음점을 매듭(knot) 이라 부르고, 매듭이 등간격이면 uniform B-spline.
Cubic B-Spline — 근사 + 지역 제어
drag곡선은 점을 통과하지 않고 끌어당기기만(근사) 합니다. 각 구간은 연속한 4개 제어점만 쓰므로 한 점을 옮기면 근처 구간만 변합니다(지역 제어). u 슬라이더로 활성 구간과 기저 bᵢ(u) 를 보세요.
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 핵심 — 가중치로 원뿔곡선 만들기
rationalNURBS의 핵심은 제어점마다 붙는 가중치(weight)입니다. 가중 유리(rational) 식이라 다항식 B-Spline이 못 하던 원·타원 같은 원뿔곡선을 정확히 표현합니다. 가운데 점 P₁의 가중치 w를 바꿔보세요.
곡선 위계 정리: Hermite/Bezier ⊂ B-spline ⊂ NURBS. NURBS 가 가장 일반적이고 표현력이 크다.
📝 Knowledge Check: 파라메트릭 곡선
Parametric Curves
공통 틀 P(u) = U·M·G 에서 곡선의 '종류'를 결정하는 것은?
🔗 다음 학습
- 이전: 10 — 래스터화
- 다음: 12 — 조명과 셰이딩 — 곡면에 빛을 입혀 색을 계산.
- 시험 대비: 기말 대비 — Numerical Hard Mode