★ APPLICATIONS ★ CREATION GRAPHIQUE ★ RSX CIRCLE (HAPPY COMPUTER) ★ |
RSX Circle (Happy Computer) | Applications Creation Graphique |
Kreise mit einem Basic-Befehl Die Grafik der Schneider Computer erlaubt in Verbindung mit den RSX-Befehls erweiterungen den Aufbau spezieller Grafikbefehle, wie bei kaum einem anderen Heimcomputer. Ein Kreis gehört natürlich dazu. Unsere Befehlserweiterung soll die Form »CIRCLE, x-Koord., y-Koord., Radius « haben. Damit die Routine hinreichend schnell wird, dürfen wir die Darstellung des Kreises in Polarkoordinaten ((x,y}= r (cos(φ),sin(φ))) nicht benutzen. Die Polynomapproximationen für cos und sin des Interpreters sind zu zeitaufwendig. Aber auch mit der Formel y = √r2-x2 geht es nicht schneller. Der CPC hat leider nur eine sehr langsame Wurzelfunktion über den Umweg: √x = x½ = exp ( ½ In(x)). Außerdem müßte noch — da die Koordinaten eines Bildpunktes ganzzahlig sind — eine zeitraubende Umwandlung von Fließkomma- in Integerformat vorgenommen werden. Eine eigene Routine muß also her. Wir nehmen dazu die Newton-Approximation für √x: Xn+1= 1 /2 (xn+ x/xn) , mitn = 0, 1, 2,... und Xo = x. Gerechnet wird nur mit ganzzahligen Werten und maximal zehn Iterationsschritten. Die entsprechende Routine ist etwa um den Faktor zehn schneller als die Routine für Gleitkommazahlen des Basic-interpreters. Noch drei Faktoren sind zu berücksichtigen, wenn man eine schnelle Routine erhalten will. Die Größe eines Grafikpunktes hängt vom jeweils gewählten Modus ab. So ist es natürlich falsch, im Mode 1 (1 Pixel = 2 x-Koordinaten) den Kreis wie im Mode 2 (1 Pixel = 1 x-Koordinate) zu zeichnen. Aufgrund der Symmetrie des Kreises brauchen wir des weiteren nur die Koordinate (x,y) eines Punktes zu berechnen und erhalten durch Vorzeichen Wechsel die entsprechenden Symmetriepunkte (—x,y), (x—y) und (—x,—y). Letztlich muß man noch entscheiden, ob der Kreis durch PLOT oder DRAW entstehen soll. Mit PLOT gibt es bei großen Kreisen Schwierigkeiten, da hier die y-Abschnitte bei zwei benachbarten x-Koordinaten mehr als ein Pixel auseinanderliegen. Es wären also zusätzliche Punkte zu plotten, um einen geschlossenen Kreis zu bekommen — natürlich auf Kosten der Geschwindigkeit. Bleibt also nur noch DRAW. Der erste Programmteil bindet die Befehlserweiterung »Circle« ein. Zu Beginn der Routine prüft das Programm die Anzahl der übergebenen Parameter. Anhand des Bildschirm-Modus wird ein Zähler für die Berechnung der x-Abschnitte bestimmt und in COUNT abgelegt. Nach Sichern der aktuellen Koordinaten setzt das Programm den Ursprung auf den übergebenen Kreismittelpunkt. Der Kreis wird beginnend bei der Koordinate (O,R) gezeichnet. Der Rest des Programms ist lediglich die leider immer mühsame Umsetzung der Formel y = √r2-x2. Eine große Hilfe sind hierbei natürlich die vom Betriebssystem zur Verfügung gestellten Routinen für die Integer-Arithmetik.
|