Freigeben über


Zeichnen kardinaler Splines

Ein kardinaler Spline ist eine Kurve, die eine bestimmte Reihe von Punkten glatt durchläuft. Um einen Kardinal-Spline zu zeichnen, erstellen Sie ein Graphics-Objekt , und übergeben Sie die Adresse eines Arrays von Punkten an die Graphics::D rawCurve-Methode . Das folgende Beispiel zeichnet einen glockenförmigen Kardinalspline, der fünf festgelegte Punkte durchläuft:

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);

Die folgende Abbildung zeigt die Kurve und fünf Punkte.

Abbildung einer Kardinalspline, die eine Gruppe von fünf Punkten durchläuft

Sie können die Graphics::D rawClosedCurve-Methode der Graphics-Klasse verwenden, um einen geschlossenen Kardinalspline zu zeichnen. In einem geschlossenen kardinalen Spline wird die Kurve durch den letzten Punkt im Array fortgesetzt und mit dem ersten Punkt im Array verbunden.

Im folgenden Beispiel wird ein geschlossener kardinaler Spline gezeichnet, der sechs angegebene Punkte durchläuft.

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);

Die folgende Abbildung zeigt den geschlossenen Spline zusammen mit den sechs Punkten:

Abbildung einer geschlossenen Kardinalspline, die eine Reihe von sechs Punkten durchläuft

Sie können die Art und Weise ändern, wie sich ein Kardinalspline biegt, indem Sie ein Spannungsargument an die Graphics::D rawCurve-Methode übergeben. Das folgende Beispiel zeichnet drei Kardinalsplines, die denselben Satz von Punkten durchlaufen:

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

Die folgende Abbildung zeigt die drei Splines zusammen mit ihren Spannungswerten. Beachten Sie, dass die Punkte bei einer Spannung von 0 durch gerade Linien verbunden werden.

Abbildung von drei Kardinalsplines, die denselben Satz von Punkten, aber bei unterschiedlichen Spannungen durchlaufen