컴퓨터 그래픽에서 수학공식 가운데 스플라인 함수를 이용하여 표현하는 매끄러운 곡선

스플라인 곡선은 적은 수의 제어점으로 매끄러운 곡선을 만들기 위한 방법의 하나이며, 함수의 차수가 높을 수록 선이 매끄럽게 되고 보통 3차 스플라인이 많이 사용된다.

Bezier 곡선과 같이 널리 사용되고 있는데, 스플라인 곡선의 데이터로 Bezier 곡선으로의 변환이 가능한 것이 특징이다.

스플라인 곡선은 모든 제어점을 지나가는 것과 지나가지 않는 것이 있으며, 후자는 컴퓨터 그래픽 등으로 곡면을 만드는데에 사용되고 있다.

자동차나 비행기의 표면과 같은 유선형의 곡선을 설계할 때 많이 사용된다.

 

정의는 여기까지

 

이 스플라인 곡선은, 1차, 2차, 3차 곡선이 있다.

차분하게 1차부터

 

 

1차 스플라인

n개의 점이 주어졌을 때, n-1개의 함수를 구하여 사용한다.

 

4개의 점이 주어졌기 때문에, P1, P2, P3의 곡선 함수를 구하여야 한다.

 

위 그래프에서

붉은색 선은 두 점간의 함수를 선형 보간하는 1차 스플라인,

초록색 선은 포물선으로 보간하는 2차 또는 3차 스플라인을 나타낸다.

 

 

1차 스플라인은 위 식과 같으며,

매 두 점마다 선형 라그랑지에 보간을 적용하는 것과 같다.

 

1차 스플라인은 직선의 형태이며,

2차 스플라인을 통해 포물선으로 보간할 필요가 있다.

 

 

2차 스플라인

2차 스플라인은 1차 스플라인과 동일하게 작은 점단위의 구간을 나누어서,

적은 차수의 함수를 여러개 가정하여 사용하는 보간 방법이다. 기본적으로는 1차 스플라인과 동일하다.

 - 딱 알맞게 하나의 함수로는 나올 수 없나보다

 

점과 구간을 나누는 방식과 경계조건을 주는 방식에 따라 보간 특성이 달라진다.

특히 1차와는 다르게, 2차부터는 곡선을 가정한다.

 - 2점을 사용하느냐, 3점을 사용하느냐

 - 경계 조건을 어떻게 두는가

  * 이 두가지 1차와 다른 부분은 사용자가 임의로 지정하여 사용하는 것

  * 일반적인 프로그래밍 공식이 없고 입맛에 맞게 하시요

 

첫번째 그림을 참고로 할 때,

아래와 같은 가상 함수를 설정한다.

 - 즉, 2차함수를 가정하며, (x_i, y_i)가 주어지는 점 좌표이다.

 - 위 식에서 구간 z_1, z_2는 자신이 원하는 특성에 맞도록 설정해서 사용하면 된다.

 

2차 스플라인에서는 구간을 나누는 방식에 따라 다르겠지만, 점이 n개인 경우, 최대 n개의 함수를 사용할 수 있으며, 각각의 함수는 위의 식이다.

즉, 미지수가 3개(a, b, c)이다.

n-1개의 함수를 사용하려면, 3n개의 방정식이 필요하다. (뭐?)

우선 x_i에서는 P_i = y_i 이어야 하므로, c_i = y_i이다.

따라서, 최종적으로는 2n개의 방정식이 필요한 것이다.

 

먼저, 함수는 연속이어야 하므로, 각 구간의 끝점에서 연결되는 함수의 값은 같아야 한다.

P_i(z_i+1) = P_i+1(z_i+1)    (a)

두번째는, 가상 함수는 다항식을 가정하므로, 특이점이 없다고 가정한다.

 - 각 구간의 끝점에서의 미분값이 같다.

 

P'_i(z_i+1) = P'_i+1(z_i+1)   (b)

전체 함수의 시작과 끝 점에서의 기울기는 0으로 가정한다.

 

P'_1(z_1) = P'_n(z_n) = 0    (c)

위의 식 (a), (b)에서 각각 n-1개의 구속조건을 얻을 수 있고, 식(c)에서 2개의 구속조건을 얻을 수 있으므로, 전체 구속조건은 2n개가 되어 풀 수 있는 연립방정식이 된다.


'Basics > Mathmatics' 카테고리의 다른 글

ANOVA 분석  (0) 2014.06.09
테일러 급수, 전개 (Taylor Series, Expansion)  (0) 2014.06.09
어파인 공간 (Affine Space)  (0) 2014.06.09
탄젠트 공간 (Tangent Plane)  (0) 2014.06.09
역행렬  (0) 2014.06.09
Posted by 긍정왕오킹