ARC

Aus C64-Wiki
Wechseln zu: Navigation, Suche
ARC
Format: ARC <mx>,<my>,<ws>,<we>,<ww>,<rx>,<ry>,<f>
Parameter
mx: X-Koordinate Mittelpunkt (0..319 / 0..159)
my: Y-Koordinate Mittelpunkt (0..199)
ws: Startwinkel in Altgrad (0..359)
we: Endwinkel in Altgrad (0..359)
ww: Winkelschrittweite in Altgrad (0..359)
rx: Radius in X-Richtung (0..255)
ry: Radius in Y-Richtung (0..255)
f: Farbquelle (0..2 / 0..4)
Einordnung
Typ: Anweisung
Kontext: Grafik
Aufgabe: Zeichnen von Bögen bei Ellipsen (u. Kreisen)
Abkürzung: keine
Verwandte Befehle
LINE - REC - BLOCK - PLOT - ANGL - CIRCLE - PAINT


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort ARC.

Typ: Anweisung 
Syntax: ARC <mx>,<my>,<ws>,<we>,<ww>,<rx>,<ry>,<f>

ARC ist sozusagen die Mutter des CIRCLE-Befehls. Man kann mit diesem Befehl ebenfalls Ellipsen und Kreise zeichnen, aber dabei sind alle erforderlichen Parameter variabel, nicht nur Mittelpunkt (<mx>,<my>) und Radien (<rx>,<ry>), sondern auch der Startwinkel <ws> (bei CIRCLE immer 0), der Endwinkel <we> (bei CIRCLE immer 360) und sogar die Winkelschrittweite <ww> beim Malen der Figur (bei CIRCLE immer 12, was eigentlich ein regelmäßiges Zwölfeck erzeugt, das auf einem C64-Bildschirm aber hinreichend kreisähnlich aussieht). In x-Richtung dürfen ARC-Bögen 255 Punkte Radius aufweisen, in y-Richtung ebenfalls.

Punkte, die über den Bildschirmrand hinausgehen würden, werden auf diese höchstmöglichen Koordinaten begrenzt, der Interpreter malt aber weiter. Die Farbe hängt vom Grafikmodus ab und bezieht sich auf die Farbangaben hinter HIRES einerseits bzw. MULTI und LOW COL andererseits. Der Punkt 0,0 ist in der linken oberen Ecke.

Das Feature, die Winkelschrittweite für das Zeichnen eines Bogens anzugeben, eröffnet ein paar positive Nebeneffekte, die in Beispiel 2 demonstriert werden: ARC kann damit regelmäßige Vielecke zeichnen, allerdings mit eingeschränkten Gestaltungsmöglichkeiten. So ist bei allen Vielecken der Anfang der Figur oben, senkrecht über dem Mittelpunkt. Dieser Punkt kann nicht verlegt werden. Und ab dem regelmäßigen Zehneck sieht alles wie ein Kreis aus. Das regelmäßige 360-Eck ist jedoch eine schöne (wenn auch langsam gezeichnete) Kreisfigur (siehe Beispiel 2).

Kreisbögen auf einem Kreis

Beachten: Zu große Angaben bei den Winkeln werden nicht abgewiesen, aber dennoch falsch berechnet. Wenn für sie Werte angegeben werden, die über 360 Grad hinausgehen, ergibt sich intern Folgendes: w = 360 + (360 - w), für einen Winkel von 370 errechnet der Interpreter also den Wert 350.

Wird kein Parameter eingegeben, so erscheint die Fehlermeldung ?SYNTAX ERROR, bei einem falschen Wert erscheint ?ILLEGAL QUANTITY ERROR.

Beispiel 1: 

100 HIRES 0,1
110 FOR i=1 TO 18: w=360/18*i
120 w1=w-35: IF w1<0 THEN w1=w1+360
130 w2=w+195: IF w2>360 THEN w2=w2-360
140 x=160+70*SIN(w*{PI}/180): y=100-70*COS(w*{PI}/180)
150 ARC x,y,w1,w2,10,30,30,1: NEXT
160 FOR i=1 TO 9: w=2*{PI}*i/9
170 PAINT 160+70*SIN(w),100-70*COS(w),1: NEXT
200 WAIT 198,255

(erzeugt die abgebildete Grafik)
Regelmäßige n-Ecke mit ARC
Beispiel 2: 

100 HIRES 1,0: mx=160: my=100: rx=25: ry=25
110 ARC 50,my,0,360,120,rx,ry,1
112 ARC 50,my,0,360,120,rx-8,ry-8,1
115 PAINT 50,my,1
120 ARC 105,my,0,360,90,rx,ry,1
122 ARC 105,my,0,360,90,rx-5,ry-5,1
125 PAINT 105,my,1
130 ARC mx,my,0,360,72,rx,ry,1
132 ARC mx,my,0,360,72,rx-5,ry-5,1
135 PAINT mx,my,1
140 ARC 215,my,0,360,60,rx,ry,1
142 ARC 215,my,0,360,60,rx-5,ry-5,1
145 PAINT 215,my,1
150 ARC 270,my,0,360,45,rx,ry,1
152 ARC 270,my,0,360,45,rx-5,ry-5,1
155 PAINT 270,my,1
160 ARC mx,my,0,360,1,150,50,1
162 ARC mx,my,0,360,1,145,45,1
165 PAINT 0,0,1: PAINT  mx,my-40,1
900 WAIT 198,255 

Beispiel 1 übernommen und angepasst aus dem Buch Spiele mit Computergrafik.