1
14장. 스플라인
학습목표
• 제어점, 지역성, 컨벡스 헐 등의 용어가 지닌 개념을 명확히 이해한다.
• 선형조합에 의해 곡선을 만드는 방법을 이해한다.
• 구간별 곡선의 연결에 가해지는 제약조건을 이해한다.
• 허미트 스플라인, 베지에 스플라인, 너브스의 특징과 장단점을 이해한다.
• 곡선을 확장하여 곡면을 생성하는 방법을 이해한다.
스플라인(Splines)
목수들이 부드러운 곡선을 긋기 위해 사용하던 얇은 금속 띠
• 추(Ducks)의 무게에 의해 부드러운 곡선
• 수학의 발전에 의해 다항식으로 표현. 다항식 곡선=스플라인
용도
3
제어점(CP: Control Points)
곡선의 모양을 제어하는 특징적인 점
• 제어점의 추가, 삭제, 위치변경 등에 의해 곡선의 모습을 제어
• 구간(Segment) = 한 쌍의 제어점 사이
스플라인 = 구간별 다항식(Piecewise Polynomials) 곡선에 대한 어파인 변환
• 제어점에 어파인 변환을 가한 후
• 변환된 제어점에 곡선의 식을 가함.
스플라인 분류
보간 스플라인(Interpolating Splines)
• 제어점을 통과(Pass-Throughness) 근사 스플라인(Approximating Splines)
• 부드러움을 위해 제어점을 통과하지 않음
• 제어점은 곡선을 끌어당기는 역할 (Remote Control)
• 경우에 따라서 첫점과 마지막 점은 통과
5
스플라인의 지역성
지역성(Locality)
• 제어점을 움직일 때 여타 구간에 미치는 영향력
• 이미 설계완료된 부분에 영향을 미치지 않도록 작을수록 좋음.
• 3개 구간 vs. 9개 구간
• 구간별로 서로 다른 계수의 다항식: 지역성 향상을 위함.
제어 그래프, 컨벡스 헐
제어 그래프(Control Graph, Control Polygon, Defining Polygon)
• 제어점들을 순서대로 선분으로 연결한 그래프
컨벡스 헐(Convex Hull)
• 제어 그래프 일부에 대해서 시작점과 끝점을 연결한 도형
• 구간별 3차 다항식: 4개의 인접한 제어점
• 구간별 2차 다항식: 3개의 인접한 제어점
7
컨벡스 헐 특성
컨벡스 헐 특성(Convex Hull Property)
• 스플라인이 컨벡스 헐 내부에만 존재할 경우
• 진동(Oscillation)이나 이탈(Overshoot)을 방지
• 제어점이 일직선(Co-linear)이면 스플라인은 직선
▪ 직선도 곡선과 동일하게 취급
파라미터 표현
y = x + 1 (0 ≤ x ≤ 4)
• (t, t + 1) or (t2, t2 + 1) or (3t, 3t + 1) 정규화 파라미터(Normalized Parameter)
• (4t, 4t + 1)
• 파라미터는 범위가 (0 ≤ t ≤ 1) 파라미터 표현의 장점
• 균등 길이
• 유한 기울기(예: x = 1)
9
스플라인의 연속성(Continuity)
곡선의 부드러움(Smoothness)
• 제어점 부근에서의 곡선의 기울기(Slope)와 곡률(Curvature)
• 불연속, C0, C1, G1, C2
C1 연속
• 들어오는기울기 = 나가는기울기. 기울기 = 접선 = 1차 미분계수 G1 연속
• 기하학적(Geometric) 또는 시각적(Visual) 연속성
• 나가는 기울기가 들어오는 기울기의 상수배, 방향만 같음.
C2 연속
• 들어오는 기울기의 변화율(Curvature, 곡률, 기울기의 기울기, 2차 미분계 수) = 나가는 기울기의 변화율. 가장 부드러운 곡선. 이를 위해 제어점을 피해 갈수 있음 = 근사 스플라인
바이어스(Bias), 텐션(Tension)
Barsky의 Beta Spline
• 텐션(Tension)
▪ 곡선의 장력 즉 긴장도.
▪ 두 개의 제어점에 의해 정의된 하나의 구간에 적용
▪ 구간 BC가 AB보다 텐션이 높음.
• 바이어스(Bias)
▪ 제어점 근처에서의 곡선 행동
▪ 제어점 B에서 (a)는 나가는 방향으로 바이어스, (b)는 들어오는 방향으로 바이어스가 걸려있음.
11
카디날 스플라인(Cardinal Splines)
혼합함수(Blending Function)
• 점을 섞어 선분의 식을 표시
• 기반함수(Basis Function), 가중치 함수(Weighting Function)
• 이 경우 혼합함수는 (1-t), (t)이므로 선형 혼합함수
카디날 스플라인 (Cardinal Splines)
선분의 선형조합
m(t1)에서 t1 = 0 인 점 p1은 p(t)로 볼 때 t = 0인 점
m(t1)에서 t1 = 1 인 점 p2는 p(t)에서 t = 1/2 인 중간점으로 간주 m(t2)에서 t2 = 0 인 점 p2는 t = 1/2
13
카디날 스플라인 (Cardinal Splines)
곡선의 선형조합
• p2, p3 사이의 곡선. 굴절곡선은 2차함수로는 안되고 3차함수
카디날 스플라인 (Cardinal Splines)
제어점 p1, p2, p3, p4가 주어지면 곡선은 p2-p3 구간에서만 정의된다.
주어진 제어점들을 정확히 통과하는 보간 스플라인 C1 연속성을 지님.
지역성으로 인해 더 이상의 혼합을 가하지 않음.
4 개의 3차 기반함수에 의해 제어점 p1, p2, p3, p4를 혼합
• 기반함수:
15
허미트 스플라인(Hermite Splines) 양 끝점의 위치와 해당 점에서의 기울기에 의해 정의
허미트 스플라인(Hermite Splines)
좌변 첫 행렬의 역행렬을 곱해 MhPt를 구함
17
허미트 스플라인(Hermite Splines)
곡선의 개형
• 기울기 크기 변화, 기울기 방향변화
베지에 스플라인(Bezier Splines) 3 개의 제어점에 의한 베지에 곡선
베지에가 제안하기 이전에 이미 번스타인(Bernstein)에 의해 수학적으로 유도가 완
19
베지에 스플라인(Bezier Splines)
선형혼합에 의함. 예시: 3개의 제어점, 4개의 제어점.
• 그림은 t = 1/3일 경우의 예
베지에 스플라인(Bezier Splines)
일반식
3개의 제어점에 의한 2차 베지에
21
베지에 스플라인(Bezier Splines)
2차 베지에 기반함수
• J2,0(t),= (1-t)2, J2,1(t) = 2t(1-t), J2,2(t) = t2 기반함수
• 제어점이 곡선을 자신 쪽으로 끌어당기는 영향력 (가중치)
• t = 0 인 p0 에서는 J2,0(t)의 영향력만 1. 따라서 t = 0인 점에서의 곡선의 위치는 p0 점 자체
• t = .5인 p1 에서는 p0 점의 영향력은 J2,0(.5) = .25, p1 점의 영향력은 J2,1(.5)=.5, p2점의 영향력은 J2,1(.5) = .25 만큼. 따라서 근사 스플라인
베지에 스플라인(Bezier Splines)
3차 베지에 곡선
23
베지에 스플라인(Bezier Splines)
베지에 곡선의 특성
• 주어진 제어점 중 처음 점과 마지막 점만 통과
• 주어진 제어점에 의해 형성되는 컨벡스 헐 내부에만 곡선이 존재(임의의 t에서 기 반함수 값이 모두 양이며 그 합이 항상 1)
• 처음 점과 마지막 점에서 곡선의 기울기는 제어 그래프와 일치
• 4 개의 제어점에 의한 3차 베지에 곡선은 제어점 p0, p1, p2, p3 전 구간에서 정의됨. cf. 카디날 스플라인
• n 개의 제어점이 주어지면 베지에 곡선은 파라미터 t에 대한 (n - 1)차 함수. 지 역성을 감안하면 3차 정도가 좋으므로 4 개의 제어점 단위로 구간 구간을 잘라서 정의.
베지에 스플라인
개형
25
베지에 스플라인
구간별 베지에 곡선의 연결조건
• G1 연속성이 요구됨.
베지에 스플라인은 허미트 스플라인의 특수한 경우
베지에 스플라인
중점 분할(Midpoint Subdivision)
• 재귀 호출(Recursive Call)에 의해 베지에 곡선을 그리는 방법
• 1개의 구간이 2개의 구간으로 나뉘어짐. 이를 반복적으로 적용
• 구간별 연속성이 보장됨(7-9-8이 직선상에 존재)
27
B-스플라인
구간별 연결에 C2 연속성 보장
• 더욱 부드러운 곡선
• 일반적으로 제어점을 통과하지 않음
• 인접한 곡선끼리 제어점을 공유
• 3차 스플라인이라면 3개의 제어점을 공유
B-스플라인
3차 B-스플라인
• 제어점 4개에 의해 1개의 구간 곡선이 정의됨.
• 3개의 제어점이 공유되므로 q0, ..., q6 까지 6개의 구간 곡선 구간별 파라미터
• [0, 1]의 범위 대신 [i, i+1]의 범위에서 움직임.
• 나트(매듭, Knot): t = i일 때의 곡선 상의 점
• 나트벡터(Knot Vector): 연속된 나트 값의 집합.
• B-스플라인의 나트벡터: 균등 나트벡터(Uniform Knot Vector)
• 나트벡터: 제어점에 추가로 곡선에 대한 제어를 강화
29
B-스플라인
B-스플라인의 B는 기반함수(Basis)를 의미함.
B-스플라인
제어점 p3가 영향을 미치는 구간곡선
• q0에 대해서 B3, q1에 대해서 B2, q2에 대해서 B1, q3에 대해서 B0의 가중치.
• 제어점 p3가 이웃한 4개의 곡선에 주는 영향
▪ 점 a, a', b, b', c는 나트에서의 기반함수 값. 다항식이므로 C2 연속을 보 장
31
B-스플라인
제어점별 기반함수의 중첩
B-스플라인
곡선을 제어점 쪽으로 끌어당길 필요성이 존재
• 방법 1: 제어점 반복
• 수학적으로는 모두 C2 연속
• 시각적으로는 (b)는 G1 연속, (c)는 G0 연속
33
B-스플라인
• 방법 2: 나트 반복.
▪ 3번 제어점 으로 당기기 위해 동일한 나트 값을 2번 나열. 나트 t4=t5=1 로 설정
B-스플라인
차등 B-스플라인(Non-Uniform B-Splines)
• 나트간격을 불규칙하게 함으로써 곡선의 모습을 제어
35
B-스플라인
일반적인 B-스플라인 = 차등 B-스플라인
• 재귀호출에 의한 B-스플라인 기반함수 생성
B-스플라인
균등 나트벡터의 기반함수와 결과
37
B-스플라인
차등 나트벡터의 기반함수와 결과
B-스플라인
차등 나트벡터의 사용
• 나트벡터 변경 결과 곡선의 모습을 예측하기 어려움
• 첫 제어점과 마지막 제어점을 통과하도록 하는데 사용
▪ 예: 나트벡터 (0.0, 0.0, 0.0, 3.0, 4.0, 5.0, 6.0, 7.0)
• 뾰족한 부분(Kink)이나 각진 모서리(Corner)를 표현할 때 사용
▪ 예: 나트벡터 (0.0, 1.0, 2.0, 3.0, 3.0, 5.0, 6.0, 7.0)
▪ 제어점 p2의 나트 값을 2번 나열 k차 기반함수
• 나트에서 C(k-1)의 연속성. 2차 기반함수는 나트에서 C1 연속성
• 나트 값이 한 번 중복될 때마다 연속성이 1차씩 감소. 아래 2차 기반함수에서는 원래 C1 연속이 C0 연속으로 바뀜.
39
너브스(NURBS)
원근변환
• 원근변환 된 모습의 곡선을 그려내려면 기반함수 자체가 유리함수(Rational Function)이어야 함
너브스(NURBS)
• 차등 유리 B-스플라인(Non-Uniform Rational B Spline)
• 제어점 마다 가중치 wi를 부여: 규칙곡선이 가능
너브스(NURBS)
너브스 표현
• 는 크기 조절이 가해진 기반 함수
• 크게 봐서 의 형태
41
너브스(NURBS) 곡선의 제어
3 가지 방법
• 나트벡터의 간격. 예: 불규칙 나트벡터
• 나트벡터의 반복. 곡선을 제어점쪽으로 끌어당김
• 제어점의 가중치. 곡선을 제어점쪽으로 끌어당김 베지어 곡선
• 너브스의 특수한 경우
• 양 끝 제어점을 통과
▪ 예:불규칙나트벡터 (0, 0, 0, 0, 1, 1, 1, 1)을 가진 너브스
• 모든 베지어 곡선은 너브스로 표현가능
스플라인 연산
첫번째 함수호출에 따른 오버헤드를 없앤 것이 두번째.
세번째 호르너 규칙(Horner’s Rule) 적용: 연산속도, 정밀성 향상
q(t) = 5 + 7t + 4t 2 + 2t 3
43
스플라인의 분할
더욱 정밀한 제어를 위해
• 베지어 곡선: 중점 분할, 1/3점 분할, …
• 너브스 곡선: 나트 추가에 의한 새로운 제어점 생성
스플라인 곡면(Spline Surfaces)
곡면은 평면의 집합으로 근사화
• 균등분할(Uniform Subdivision), 가변분할(Adaptive Subdivision)
• 스플라인 곡선의 직접적인 확장이 스플라인 곡면
▪ 곡선의 제어 그래프가 서로 교차
45
스플라인 곡면
스플라인 곡선
양방향 3차 곡면(Parametric Bicubic Surface)
• u, w 파라미터가 필요함
• 우변 두 번째 행렬 M에 보간 방법과 점 p의 위치를 반영
공간상의 4 점이 주어졌을 경우 4점으로 채워진 곡면
47
2 개의 공간곡선이 주어졌을 경우 공간곡선(Space Curve)
• 3차원 곡선
괘선 면(Ruled Surface)
4 개의 경계곡선이 주어질 경우
4개 곡선의 영향력을 모두 감안
윗 식의 오류
49
허미트 곡면(Hermite Surfaces)
(a)의 하단 곡선 이 곡선을 위로 올림
p1(w), p2(w)도 허미트 곡선.
베지어 곡면(Bezier Surface)
선형보간에 의함
• 1차 베지어 곡면
• 1차 베지어 곡면, 2차 베지어 곡면
51
베지어 곡면(Bezier Surface)
3차 베지어 곡면
• 4 by 4 = 16개의 제어점
• J 는 베지어 곡선의 공식
• 양방향의 스플라인을 직접 곱하는 형식 = 직교적(直交積, Cartesian Product, Tensor Product)
베지어 곡면(Bezier Surface)
베지어 곡면의 연결
• 베지어 곡선과 마찬가지로 연결성에 유의
• u, w 양 방향 모두에 대해 제어점이 일직선 위에 놓이게 제한
53
베지어 곡면(Bezier Surface)
B-스플라인 곡면(B-Spline Surfaces)
B-스플라인 곡선의 직교적
C2 연속성을 보장. cf. 베지에 곡면: G1 연속성
적은 수의 제어점만으로 규칙적인 입체 표면을 완벽히 표현
55
2차곡면(Quadric Surfaces)
파라미터 표현이 아님.
x, y, z에 관한 2차 함수. x, y, z 사이의 직접적인 관계에 의해 표현
• 예: 원구
일반적인 2차곡면
• 대각선 행렬(Diagonal Matrix). 대각선을 중심으로 서로 대칭
2차곡면(Quadric Surfaces)
장점
• 어떤 점이 표면 위에 존재하는지 검증하기 쉽다.
• x, y 좌표가 주어졌을 때 z 좌표를 계산하기 쉽다. (은면 제거에 이용)
• 선분과의 교차점을 계산하기 쉽다. (레이트레이싱에 적용)
• 표면의 법선벡터를 계산하기 쉽다.
법선벡터