다음을 통해 공유


카디널 스플라인

카디널 스플라인은 더 큰 곡선을 형성하기 위해 조인된 개별 곡선의 시퀀스입니다. 스플라인은 점 배열과 장력 매개 변수로 지정됩니다. 카디널 스플라인은 배열의 각 지점을 원활하게 통과합니다. 날카로운 모서리가 없고 곡선의 압박감이 갑자기 바뀌지 않습니다. 다음 그림에서는 집합의 각 지점을 통과하는 일련의 점과 카디널 스플라인을 보여 줍니다.

정의된 6개의 지점을 통과하는 카디널 스플라인을 보여 주는 그림

물리적 스플라인은 나무 또는 기타 유연한 재료의 얇은 조각입니다. 수학 스플라인이 등장하기 전에 디자이너는 물리적 스플라인을 사용하여 곡선을 그렸습니다. 디자이너는 스플라인을 종이에 놓고 지정된 포인트 집합에 고정합니다. 그런 다음 디자이너는 연필로 스플라인을 따라 그려 곡선을 만들 수 있습니다. 지정된 포인트 집합은 물리적 스플라인의 속성에 따라 다양한 곡선을 생성할 수 있습니다. 예를 들어 굽힘에 대한 저항성이 높은 스플라인은 매우 유연한 스플라인과는 다른 곡선을 생성합니다.

수학 스플라인에 대한 수식은 유연한 막대의 속성을 기반으로 하므로 수학 스플라인에 의해 생성된 곡선은 한때 물리적 스플라인에 의해 생성된 곡선과 유사합니다. 서로 다른 장력의 물리적 스플라인이 지정된 점 집합을 통해 서로 다른 곡선을 생성하는 것처럼, 장력 매개 변수의 값이 다른 수학적 스플라인은 지정된 점 집합을 통해 서로 다른 곡선을 생성합니다. 다음 그림에서는 동일한 점 집합을 통과하는 네 개의 카디널 스플라인을 보여 줍니다. 각 스플라인에 대해 장력이 표시됩니다. 0의 장력은 무한 물리적 인 장력에 해당하므로 곡선이 점 사이의 가장 짧은 방법 (직선)을 취하도록 강요합니다. 1의 장력은 물리적 장력이 없음에 해당하므로 스플라인이 전체 굽힘 경로를 최소화할 수 있습니다. 장력 값이 1보다 크면 곡선은 압축된 스프링처럼 동작하며 더 긴 경로를 사용합니다.

동일한 3점을 통해 네 개의 카디널 스플라인을 보여 주는 그림

앞의 그림에 있는 네 개의 스플라인은 시작점에서 동일한 탄젠트 선을 공유합니다. 접선은 시작점에서 곡선을 따라 다음 지점까지 그리는 선입니다. 마찬가지로 끝점의 공유 접선도 끝점에서 곡선의 이전 지점까지 그리는 선입니다.

카디널 스플라인을 그리려면 Graphics 개체, Pen 개체 및 Point 개체 배열이 필요합니다. Graphics 개체는 스플라인을 그리는 DrawCurve 메서드를 제공하며, Pen 개체는 선 너비 및 색과 같은 스플라인의 특성을 저장합니다. Point 개체의 배열은 곡선이 통과할 점을 저장합니다. 다음 예제에서는 myPointArray의 점을 통과하는 카디널 스플라인을 그립니다. 세 번째 매개 변수는 장력입니다.

myGraphics.DrawCurve(&myPen, myPointArray, 3, 1.5f);