ARC
ARC | |
Syntax: | 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 (TSB: aR) |
Token: | $64 $6b (100 107) |
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 als 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 Kreisbögen auf einem Kreis 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 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.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Regelmäßige n-Ecke[Bearbeiten | Quelltext bearbeiten]
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
Kreisbögen auf einem Kreis[Bearbeiten | Quelltext bearbeiten]
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
Das Beispiel zuvor übernommen und angepasst aus dem Buch Spiele mit Computergrafik.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE