캣멀-롬 스플라인(Catmull-Rom Splines)

캣멀-롬 스플라인은 3차 허밋 스플라인에서 시작(U)과 끝(V) 지점의 속도 벡터를 결정하기 위한 특정한 값을 가진 스플라인 입니다. 새로운 스플라인 이라기 보다는 3차 허밋 스플라인을 구현하기 위한 기술이라고 생각해도 좋습니다. 각 지점을 통과하는 곡선을 구현하려면 여기서 설명하는 캣멀-롬 스플라인이 좋은 방법입니다.

캣멀-롬 스플라인 그리기

먼저 시작점과 끝점, 그리고 각 노트들을 의미하는 일련의 점들부터 그려봅시다.

스플라인의 시작과 끝지점에서의 속도는 0으로 가정합니다(여기서는 0과 6지점).

점 0에서 2로 가는 벡터를 구합니다. (Vec0to2=P2P0)(Vec_0to_2 = P2 – P0)

이 벡터가 점 1에서의 접선이 됩니다.

이제 이 벡터를 반으로 줄입니다.

짠! 이제 점 0과 1 그리고 각각의 속도벡터가 생겼으니 허밋 곡선을 그려봅시다.

이제 점 1에서 3으로 가는 벡터를 계산해 봅시다. (Vec1to3=P3P1)(Vec_1to_3 = P3 – P1)

이 벡터는 점 2를 위한 접선이 될것입니다.

이 벡터도 반으로 줄입니다.

이전과 마찬가지로 허밋 스플라인을 그려봅시다.

점 3에 대한 계산도 같은 방식으로 반복합니다.

점 4에 대한 계산도 똑같이 반복합니다.

점 5도 계산해 볼까요?

초반에 점 6에 대한 속도를 0으로 만들어놨기 때문에 추가 계산은 필요없습니다. 마지막 허밋 곡선을 그리면 캣멀-롬 스플라인이 완성됩니다.

캣멀-롬 스플라인의 수학적 계산

원하는 위치에 노트들을 배치합니다.(A, D 등등)

만약 N번째 지점을 PNP_N 이라고 한다면, N번째 지점에서의 속도 VNV_N 은 다음 공식으로 구할 수 있습니다. VN=(PN+1PN1)/2V_N = (P_{N+1} - P_{N -1}) / 2

즉, 점 P에에서의 속도는 [이전 점에서 다음 점을 가리키는 벡터의 절반] 인 것입니다.

Last updated