Kurven zu Zahlen
Tausend Mark sind doch eine Menge Geld für ein Programm, das aus Kurven Zahlen macht (s. c´t 9/95, S. 44). Gibt es denn keine preiswertere Methode?
Tausend Mark sind doch eine Menge Geld für ein Programm, das aus Kurven Zahlen macht (s. c´t 9/95, S. 44). Gibt es denn keine preiswertere Methode?
Manche Zeichenprogramme (z. B. Corel Draw) bieten die Möglichkeit, eingescannte Abbildungen in das HPGL-Format zu übersetzen. In diesem Format liegen sämtliche Zeichnungselemente in x,y-Koordinaten fest. Diese müssen dann nur noch in die gewünschten Größen entsprechend des Abbildungsmaßstabes durch einfache lineare Beziehungen umgerechnet werden. Am besten mit einem Tabellenkalkulationsprogramm, das den Import von HPGL-Dateien erlaubt.
Im einzelnen: Zunächst entfernt man mit einem Zeichenprogramm alle störenden Linien. Wichtig ist, daß der gewünschte Kurvenzug anschließend in möglichst zusammenhängenden Stücken vorliegt. Die Übertragung in das HPGL-Format liefert eine Folge von Plotterkommandos; wobei hier allein die Steuerzeichen für die Stiftposition interessieren, nämlich die Anweisungen ´PU X Y´ und ´PD X Y´. X und Y stehen für x,y-Koordinaten, die für den Plotter einen Punkt auf dem Zeichenfeld beschreiben. Mit PU (Pen Up) steuert der Plotter einen Punkt an, ohne eine Linie zu zeichen. Bei PD (Pen down) dagegen fährt er die nächste Koordinate mit gesenktem Stift an, zeichnet also eine Linie. Eine Linie mit den Punkten (X1,Y1), (X2,Y2) und (X3,Y3) wird daher mit PU X1 Y1, PD X2 Y2 und PD X3 Y3 kodiert. Zur Umrechnung dieser Koordinaten in die gewünschten Einheiten müssen nun zwei Punkte des HPLG-Skriptes (am einfachsten der Anfangs - und der Endpunkt mit kleinster und größter x-Koordinate) gesucht werden. Aus der Originalabbildung liest man für diese Punkte die Werte der Abszisse ( z. B. Xmin und Xmax) und Ordinate ab.
In der HPGL-Datei seien die x-Koordinaten des Anfangs- und Endpunktes X´min und X´max. Mit folgender Gleichung kann dann für jede x-Koordinate X´ aus der HPGL-Datei die ursprüngliche Größe berechnen:
X =(X´-X´min)/(X´max-X´min)*(Xmax-Xmin)+Xmin
Gleiches gilt für die y-Achse. Je nach Übertragungsgenauigkeit des HPGL-Filters erhält man für jede Kurve eine Vielzahl von Punkten ( X´ Y´), die gemäß der dargestellten Gleichung aus dem Plotterkoordinatensystem in das gewünschte Koordinatensystem umzurechnen sind, mit einem Tabellenkalkulationsprogramm beispielsweise. (Armin Schleussinger/ps) (ps)