Freigeben über


Kardinale Splines in GDI+

Ein kardinaler Spline ist eine Abfolge einzelner Kurven, die miteinander verbunden werden, um eine größere Kurve zu bilden. Der Spline wird durch ein Array von Punkten und einen Spannungsparameter angegeben. Eine kardinaler Spline durchläuft glatt jeden Punkt im Array. Es gibt keine scharfen Ecken und keine abrupten Änderungen bei der Enge der Kurve. Die folgende Abbildung zeigt eine Reihe von Punkten und einen kardinalen Spline, der jeden Punkt in der Gruppe durchläuft.

Cardinal Spline

Physische und mathematische Splines

Ein physischer Spline ist ein dünnes Holzstück oder ein anderes flexibles Material. Vor der Einführung mathematischer Splines haben Designer physische Splines verwendet, um Kurven zu zeichnen. Ein Designer würde den Spline auf einem Papierstück platzieren und an einer bestimmte Gruppe von Punkten verankern. Der Designer könnte dann eine Kurve erstellen, indem er mit einem Stift oder Bleistift an dem Spline entlang zeichnet. Je nach den Eigenschaften des physischen Splines könnte eine bestimmte Gruppe von Punkten eine Vielzahl von Kurven liefern. So würde z. B. ein Spline mit hohem Biegewiderstand eine andere Kurve erzeugen als ein extrem flexibler Spline.

Die Formeln für mathematische Splines basieren auf den Eigenschaften flexibler Stäbe, sodass die von mathematischen Splines erzeugten Kurven den Kurven ähneln, die früher mit physischen Splines erzeugt wurden. Ebenso wie physische Splines mit unterschiedlichen Spannungen verschiedene Kurven durch eine vorgegebene Gruppe von Punkten erzeugen, erzeugen mathematische Splines mit unterschiedlichen Werten für den Spannungsparameter verschiedene Kurven durch eine vorgegebene Gruppe von Punkten. Die folgende Abbildung zeigt vier kardinale Splines, die durch dieselbe Gruppe von Punkten laufen. Die Spannung wird für jeden Spline angezeigt. Eine Spannung von 0 entspricht unendlicher physischer Spannung, wodurch die Kurve gezwungen wird, den kürzesten Weg (gerade Linien) zwischen Punkten zu nehmen. Eine Spannung von 1 entspricht keiner vorhandenen physischen Spannung, sodass der Spline den Weg der geringsten Gesamtbiegung nehmen kann. Mit Spannungswerten größer als 1 verhält sich die Kurve wie eine komprimierte Feder, und wird gezwungen, einen längeren Weg zu nehmen.

Cardinal Splines

Die vier Splines in der vorherigen Abbildung besitzen dieselbe Tangentenlinie am Startpunkt. Die Tangente ist die Linie, die vom Startpunkt bis zum nächsten Punkt entlang der Kurve gezeichnet wird. Ebenso ist die gemeinsame Tangente am Endpunkt die Linie, die vom Endpunkt bis zum vorherigen Punkt der Kurve gezogen wird.

Um einen kardinalen Spline zu zeichnen, benötigen Sie eine Instanz der Graphics-Klasse, einen Pen und ein Array von Point-Objekten. Die Instanz der Graphics-Klasse stellt die DrawCurve-Methode bereit, die den Spline zeichnet, und der Pen speichert die Attribute des Splines, z. B. Linienstärke und -farbe. Das Array von Point-Objekten speichert die Punkte, die die Kurve durchlaufen wird. Im folgenden Codebeispiel wird gezeigt, wie Sie einen kardinalen Spline zeichnen, der die Punkte in myPointArray durchläuft. Der dritte Parameter ist die Spannung.

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

Siehe auch