다음을 통해 공유


카디널 스플라인 그리기

카디널 스플라인은 지정된 점 집합을 원활하게 통과하는 곡선입니다. 카디널 스플라인을 그리려면 Graphics 개체를 만들고 점 배열의 주소를 Graphics::D rawCurve 메서드에 전달합니다. 다음 예제에서는 5개의 지정된 지점을 통과하는 종 모양의 카디널 스플라인을 그립니다.

Point points[] = {Point(0, 100),
                  Point(50, 80),
                  Point(100, 20),
                  Point(150, 80),
                  Point(200, 100)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5);

다음 그림에서는 곡선과 5개의 점을 보여 줍니다.

5점 집합을 통과하는 카디널 스플라인 그림

Graphics 클래스의 Graphics::D rawClosedCurve 메서드를 사용하여 닫힌 카디널 스플라인을 그릴 수 있습니다. 닫힌 카디널 스플라인에서 곡선은 배열의 마지막 지점을 계속 진행하며 배열의 첫 번째 점과 연결됩니다.

다음 예제에서는 6개의 지정된 점을 통과하는 닫힌 카디널 스플라인을 그립니다.

Point points[] = {Point(60, 60),
   Point(150, 80),
   Point(200, 40),
   Point(180, 120),
   Point(120, 100),
   Point(80, 160)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawClosedCurve(&pen, points, 6);

다음 그림에서는 닫힌 스플라인과 6개의 점을 보여 줍니다.

6점 집합을 통과하는 닫힌 카디널 스플라인 그림

Graphics::D rawCurve 메서드에 tension 인수를 전달하여 카디널 스플라인이 구부러지는 방식을 변경할 수 있습니다. 다음 예제에서는 동일한 점 집합을 통과하는 세 개의 카디널 스플라인을 그립니다.

Point points[] = {Point(20, 50),
                  Point(100, 10),
                  Point(200, 100),
                  Point(300, 50),
                  Point(400, 80)};

Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5, 0.0f);  // tension 0.0
graphics.DrawCurve(&pen, points, 5, 0.6f);  // tension 0.6
graphics.DrawCurve(&pen, points, 5, 1.0f);  // tension 1.0

다음 그림에서는 세 개의 스플라인과 장력 값을 보여 줍니다. 장력이 0이면 점이 직선으로 연결됩니다.

동일한 포인트 집합을 통과하지만 다른 긴장감에 있는 세 개의 카디널 스플라인 그림