GDI+의 카디널 스플라인

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

카디널 스플라인

물리적 및 수학 스플라인

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

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

카디널 스플라인

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

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

myGraphics.DrawCurve(myPen, myPointArray, 1.5f);
myGraphics.DrawCurve(myPen, myPointArray, 1.5F)

참고 항목