Einleitung

Ich möchte in dieser Arbeit zum Thema ,,Approximation von Polygonzügen durch Bézierkurven`` eine Möglichkeit vorstellen, wie Polygone bestmöglich durch Bézierkurven angenähert werden können. Dies kann beispielsweise bei der Erstellung von Wetterkarten von Nutzen sein.

Grundlage dieser Karten sind Wetterdaten, die von einem Wetterdienst bereitgestellt wurden. Die Daten sind Werte von Messungen oder Voraussagen an Messpunkten die über ein Gebiet verteilt sind. Aus diesen Daten werden meist zur besseren Darstellung Isolinien berechnet, die aufgrund des Netzes, das die Messpunkte bilden, in Form von Polygonen oder Polygonzügen vorliegen. Diese Isolinien approximieren den wirklichen Verlauf, der durch stetige Kurven beschrieben werden kann. Um der realen Situation näher zu kommen und der Darstellung ein ästetischeres Aussehen zu verleihen, werden die berechneten Isolinien, also die Polygone, in stetige Kurven umgewandelt. Für diese Umwandlung kann das in dieser Arbeit vorgestellte und auf diesen Zweck ausgerichtete Verfahren genutzt werden.

Die berechneten Kurven sollen dazu in einem möglichst verbreitetem graphischen Format gespeichert werden, damit sie in Applikationen ohne größeren Aufwand verwendet werden können. Ein Format, welches das Speichern von Kurven unterstützt, ist durch die Vektorgraphiken gegeben. Mit diesen ist eine Umwandlung in viele Formate möglich. In Vektorgraphiken werden die Bilddaten nicht Pixel für Pixel gespeichert, sondern nur die Daten, die für das Zeichnen des gespeicherten Bildes relevant sind. Im Fall von Polygonen sind es nur die Eckpunkte, im Fall von Kurven die Kontrollpunkte. Bei einem Bild von 100 mal 100 Pixeln müssen somit nicht 10000 Farbwerte gespeichert werden, sondern nur die Daten der Eckpunkte oder Kontrollpunkte, die bedeutend weniger Speicher benötigen. Somit ermöglichen sie eine effektiven Speicherung der Daten. Darüber hinaus haben die Vektorgraphiken den Vorteil des verlustfreien Skalierens, so dass die Graphiken ohne Qualitätsverlust auf jede beliebige Größe gebracht werden können. Als Speicherformat habe ich Skalierbare Vektorgraphiken (SVG)1 gewählt. SVG ist ein offenes Format des W3C2, das auf XML3 basiert. Da es ein offenes Format ist, können Applikationen die Unterstützung für dieses Format ohne zusätzliche Lizenzkosten einsetzen.

Für die Approximation von Polygonen können Splines, Nurbs oder Bézierkurven verwendet werden, da SVG nur die Speicherung von Bézierkurven unterstützt, wird dieses Format für die Approximation verwendet. Bézierkurven werden auch von anderen Formaten unterstützt und somit ist eine verlustfreie Umwandlung in andere Formate möglich. Daraus ergibt sich für den Nutzer bei Bedarf die Möglichkeit ein anderes Format anstatt SVG zu verwenden. Die von SVG unterstützten Typen von Bézierkurven sind die quadratischen und die kubischen Bézierkurven4. In dieser Arbeit finden beide Formen gleichermaßen Berücksichtigung.

Um die Grundlage für die weiteren Überlegungen zu schaffen, stelle ich im ersten Teil meiner Arbeit einige zentrale Begriffe vor. Dazu gehört unter anderem die Erläuterung der Begriffe ,,Polygonzug`` und ,,Bézierkurve``. Im zweiten Teil, werde ich hergeleiten, wie eine sinnvolle Approximation von Polygonen und Polygonzügen durch quadratische Bézierkurven erfolgen kann. Dazu werden Formeln und Methoden erläutert, die zu diesen Bézierkurven führen. Im Anschluss daran werden die beschriebenen Methoden und Formeln auf die Approximation durch kubische Bézierkurven übertragen. Bezugnehmend auf diese Ausführungen wird in dem darauf folgendem Kapitel erläutert, welche Auswirkungen die Veränderung der Werte bestimmter Parameter auf das Aussehen der berechneten Bézierkurve hat. Auf diese Weise wird dem Nutzer die Möglichkeit gegeben die Bézierkurve den jeweiligen Ansprüchen anzupassen. Auf dieser Grundlage kann anschließend die Implementation der vorangegangenen Überlegungen in der Programmiersprache Java vorgestellt werden. Dazu werden zunächst alle Klassen und deren Eigenschaften dargestellt und anschließend der Ablauf der Berechnung der Bézierkurven bei Vorgabe eines Polygons erläutert. Den Schluss bildet die Darstellung der Nutzung der Implementation. In diesem Zusammenhang wird auch die möglichen Einbindungen der Implementation in andere Programme Berücksichtigung finden.

Karl kleine Kruse 2007-09-16