Grafik auf dem C64
Grafik auf dem C64 | |||
---|---|---|---|
Sprache | deutsch | ||
Autor(en) | Walter Bachmann | ||
Verlag | Westermann Schulbuch GmbH, Braunschweig | ||
Jahr | 1984 | ||
ISBN | ISBN 3-14-508811-4 | ||
Neupreis | DM 29,80 | ||
Datenträger | |||
Seitenzahl | 205 | ||
letzte Auflage | 1. Auflage | ||
Genre | Programmieren | ||
Information |
Beschreibung[Bearbeiten | Quelltext bearbeiten]
Aus dem Vorwort:
"Die Leistungsfähigkeit von grafikverarbeitenden Geräten erfordert ein Lehrbuch, das die Grundlagen der Computergrafik behandelt. Das vorliegende Buch will in diese Grundlagen einführen. Die notwendigen geometrischen Grundlagen werden mit einfachen und anschaulichen Ableitungen aufbereitet. Die abgeleiteten Algorithmen werden in die Programmiersprache BASIC übertragen. Zu jedem Kapitel werden Basic-Programme angeboten. Besonderer Wert wurde bei der Auswahl der Algorithmen auf eine Praxisnähe zu technisch-naturwissenschaftlichen Berufsfeldern gelegt. Obwohl alle Programme für den C-64 Computer mit SIMONS'-BASIC geschrieben sind, ist eine leichte Übertragung der Programme auf andere Rechner möglich. Dies resultiert daher, daß der algorithmische Gedanke in diesem Buch gegenüber einer Ausnutzung von speziellen und selten gebrauchten Grafikbefehlen dominiert."
Text auf der Cover-Rückseite:
"Einer sehr gut verständlichen Programmbeschreibung folgt jeweils das komplette Listing und die Abbildung der entsprechenden Grafik. Ohne tiefergehende Kenntnisse vorauszusetzen, werden elementare Programmierungstechniken wie z.B. die Bildschirmfenstergestaltung, das Schraffieren bzw. Füllen von Flächen und das Zeichnen geometrischer Grundfiguren ausführlich erläutert und an vielen Abbildungen demonstriert. Optisch eindrucksvolle Demo-Grafiken in schönen Farbgebungen, eine Fülle von anwendungsorientierten Grafikprogrammen aus Mathematik und Physik, komfortable menügesteuerte Zeichenprogramme, 3D-Grafiken sowie Programme zur grafischen Lösung von Differentialgleichungen zeigen, dass alle wesentlichen Grafikmöglichkeiten vom Autor behandelt werden. Die Programme kommen mit dem Befehlssatz von SIMONS' BASIC aus und sind vom Leser leicht nach eigenen Wünschen zu ändern."
Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]
1. Vorwort
2. Bildschirmtechnologie 2.1 Hochauflösende Grafik mit Standard-Basis 2.2 BRESENHAM-Algorithmus
3. Laden von SIMONS' BASIC
4. Zeichnen von Linien 4.1 Zeichnen von dicken Linien 4.2 Zeichnen von gestrichelten Linien
5. Bildschirmkoordinaten 5.1 Die Skalengleichung 5.2 Zeichnen einer x-Achse 5.3 Zeichnen einer Funktionsskala 5.4 Berechnung der Bildschirmkoordinaten
6. Grafische Bildschirmfenster 6.1 Bildschirmfenster mit Ausblendung
7. Geradengleichung 7.1 Parameterdarstellung der Geraden 7.2 Schnittpunkt von 2 Geraden 7.3 Schraffieren von Flächen 7.4 Füllen von Flächen
8. Kreis 8.1 Pararmeterdarstellung des Kreises 8.2 Der CIRCLE-Befehl
9. Ellipsen 9.1 Parameterdarstellung der Ellipse 9.2 Der ARC-Befehl
10. Parabeln
11. Demo-Grafiken 11.1 Diagonalnetz 11.2 Moiree-Effekt 11.3 Geschachtelte Sechsecke 11.4 Diagonalen im n-Eck 11.5 Röhrengrafiken 11.6 Turtle-Grafiken 11.7 Demo-Grafik mit Rechtecken 11.8 Eingeschriebene Vierecke 11.9 LISSAJOUS-Figuren
12. Zeichnen von Funktionen 12.1 Funktionen in kartesischer Darstellung 12.2 Zeichnen von Parameterfunktionen 12.3 Zeichnen von Ortskurven
13. Präsentationsgrafiken 13.1 Balken-Diagramme 13.2 Kreis-Diagramme
14. Zufallsgrafiken
15. Ebener Polygonzug
16. Approximationen
16.1 Interpolation nach LAGRANGE 16.2 Fortlaufende parabolische Interpolation 16.3 Interpolation nach NEWTON 16.4 Rationale Interpolation 16.5 BEZIER-Kurve
17. 3D-Darstellungen 17.1 Parallelprojektionen 17.2 Dimetrie, Isometrie, Kavalier- und Militärperspektive 17.3 3D-Darstellungen von Funktionen 17.4 Hidden-Live-Algorithmus 17.5 Niveaulinien
18. Ausgewählte Anwendungen 18.1 Simulationen 18.2 Differentialgleichungssysteme 18.3 Universelles Zeichenprogramm 18.4 Zeichnen mit demJoystick 18.5 Mini-CAD-Programm 18.6 Glätten von Messreihen
19. Befehlsliste von SIMONS'-BASIC
Register
Buchdiskette[Bearbeiten | Quelltext bearbeiten]
Eine Diskette mit den Programmen zur Erstellung der Grafiken war unter der Best.-Nr. 13 8011 erhältlich.
Disketteninhalt:
0 "grafik c-64 " g2 2a 1 "grafik 1" prg linien zeichnen 2 "grafik 2" prg dicke linien zeichnen 2 "grafik 3" prg dicke linien zeichnen 3 "grafik 4" prg gestrichelte linien zeichnen 3 "grafik 5" prg gestrichelte linien zeichnen 8 "grafik 6" prg achse 3 "grafik 7" prg bildschirmfenster 6 "grafik 8" prg bildschirmfenster mit ausblendung 6 "grafik 9" prg bildschirmfenster mit ausblendung 7 "grafik 10" prg schraffieren eines geschlossenen polygonzuges 4 "grafik 11" prg farbiges ausfuellen von zufallsrechtecken 2 "grafik 12" prg kreis zeichnen mit der parameterdarstellung 2 "grafik 13" prg ellipsen zeichnen 2 "grafik 14" prg der arc-befehl 3 "grafik 15" prg parabel durch 3 punkte zeichnen nach newton 1 "grafik 16" prg netz zeichnen 1 "grafik 17" prg diagonalnetz 2 "grafik 18" prg moiree-effekt 3 "grafik 19" prg geschachtelte sechsecke 2 "grafik 20" prg diagonalen im n-eck 2 "grafik 21" prg roehren-grafik 1 2 "grafik 22" prg roehren-grafik 1 2 "grafik 23" prg roehren-grafik 1 2 "grafik 24" prg roehren-grafik 2 2 "grafik 25" prg kreise zeichnen 2 "grafik 26" prg turtle-graphik 2 "grafik 27" prg turtle-graphik 2 "grafik 28" prg turtle-graphik 2 "grafik 29" prg stern-grafiken 2 "grafik 30" prg stern-grafiken 2 "grafik 31" prg stern-grafiken 2 "grafik 32" prg rechtecke 2 "grafik 33" prg rechtecke 2 "grafik 34" prg rechtecke 3 "grafik 35" prg eingeschriebene vierecke 3 "grafik 36" prg eingeschriebene vierecke 2 "grafik 37" prg lissajous-figuren 2 "grafik 38" prg lissajous-figuren 2 "grafik 39" prg lissajous-figuren 2 "grafik 40" prg lissajous-figuren 2 "grafik 41" prg lissajous-figuren 2 "grafik 42" prg lissajous-figuren 2 "grafik 43" prg lissajous-figuren 2 "grafik 44" prg lissajous-figuren 2 "grafik 45" prg lissajous-figuren 3 "grafik 46" prg sin()-funktion zeichnen 3 "grafik 47" prg sin()-funktion zeichnen 4 "grafik 48" prg parameter-funktion zeichnen 4 "grafik 49" prg parameter-funktion zeichnen 4 "grafik 50" prg parameter-funktion zeichnen 3 "grafik 51" prg zeichnen von ortskurven 4 "grafik 52" prg balkendiagramm 6 "grafik 53" prg balken-diagramm 5 "grafik 54" prg kreis-diagramm 4 "grafik 55" prg zufallsgrafiken mit geraden 7 "grafik 56" prg zufallsgrafiken mit stetigen kurven 4 "grafik 57" prg polygonzug durch p1, p2, p3, ..., pn 7 "grafik 58" prg geschlossener polygonzug fuer die brd 7 "grafik 59" prg parabolische interpolation 9 "grafik 60" prg parabolische interpolation 7 "grafik 61" prg fortlaufende (stueckweise) parabolische interpolation nach newton 6 "grafik 62" prg fortlaufende rationale interpolation 5 "grafik 63" prg bezier-kurven 3 "grafik 64" prg 3-d-darstellung von funktionen w = w(u,v) mit allen unsichtbaren linien 10 "grafik 65" prg 3-dim-darstellung von w = w(u,v) 10 "grafik 66" prg 3-dim-darstellung von w = w(u,v) 10 "grafik 67" prg 3-dim-darstellung von w = w(u,v) 10 "grafik 68" prg 3-dim-darstellung von w = w(u,v) 11 "grafik 69" prg 3-dim-darstellung von w = w(u,v) 11 "grafik 70" prg 3-dim-darstellung von w = w(u,v) 12 "grafik 71" prg zeichnen von hoehen-schicht-linien fuer die funktion w = w(u,v) 4 "grafik 72" prg farbige hoehenschichten 10 "grafik 73" prg grafische darstellung der loesung von differential-gleichungen 10 "grafik 74" prg grafische darstellung der loesung von differential-gleichungen 11 "grafik 75" prg loesung eines linearen differentialgleichungs-systems nach runge-kutta-gill 12 "grafik 76" prg loesung eines linearen differentialgleichungs-systems nach runge-kutta-gill 58 "zeichnen" prg universelles plot-programm 20 "mini-cad" prg ein mini-cad-programm 7 "grafik 87" prg glaetten von messpunkten p1, p2, ..., pn 7 "grafik 88" prg glaetten von messpunkten p1, p2, ..., pn 7 "grafik 89" prg glaetten von messpunkten p1, p2, ..., pn 7 "grafik 90" prg glaetten von messpunkten p1, p2, ..., pn 7 "grafik 91" prg glaetten von messpunkten p1, p2, ..., pn 7 "grafik 92" prg glaetten von messpunkten p1, p2, ..., pn 212 blocks free.
Leseprobe[Bearbeiten | Quelltext bearbeiten]
2.2 Bresenham - Algorithmus
Obwohl in SIMON'S BASIC der LINE-Befehl und andere Grafik-Befehle realisiert sind, wol- len wir für interessierte Leser das Prinzip dieses Assembler-Programmstückes zum Zeichnen einer Linie beschreiben. Das Maschinenunterprogramm wird durch den LINE-Aufruf gestar- tet. Im Gegensatz zur Multiplikation ist die Ganzzahl-Addition durch den Mikroprozessor 65xx direkt ausführbar und damit sehr schnell. Der folgende, auf Bresenham (1965) zurückge- hende Algorithmus zum Setzen von Bildpunkten für eine Linie benötigt lediglich Additionen und eine Division durch 2. Diese Operationen lassen sich leicht in der Maschinensprache reali- sieren. Zur Veranschaulichung, hier die Formulierung dieses Assembler-Algorithmus in SIMON'S BASIC:
800 rem--- bresenham-algorithmus --- 810 hires 1,6 820 x=0: y=0: x1=7: y1=4: s=-x1/2 825 : 830 loop 840 exit if x >= x1 850 plot x,y,1 860 x = x + 1: s = s + y1 870 if s >= 0 then y = y + 1: s = s-x1 875 print " ": y; s 880 end loop 885 : 890 get a$: if a$="" then 830
Statt x=x+1 wird auf Assembler-Ebene durch INX das x-Register des 65xx-Prozessorrs um 1 "inkrementiert", also der Inhalt von x um 1 erhöht. Die Division durch 2 wird durch ein "logi- sches nach rechts schieben" eines Speicherstelleninhalts LSR (=logical shift right) und die
Addition mit ADC (=add with carry), einer Addition mit dem Accumulatorinhalt plus dem Übertragsbit, ausgeführbar. Der SI- MON'S-BASIC-Anweisung PLOT x,x 1 entspricht auf Assembler-Ebene der Trans- fer des Accu-Inhaltes in den HIRES-Bild- Schirm-Speicherbereich (Einspeichern eines Bitmusters, Bitmapping). Als Beispiel be- trachten wir eine Linie von P(0/0) nach P1(7/4). Wie die Abb. 1 zeigt, liegen auf die- ser Linie lediglich der Anfangs- und End- punkt. Durch den Bresenham-Algorithmus werden die in der Abbildung hervorgehobe- nen Pixels gesetzt. Der Algorithmus liefert für den Ausgangspunkt x=0, y=0, s=-3.5 der Reihe nach die folgenden Werte:
x | s | y | s |
1 | +0.5 | 1 | -6.5 |
2 | -2.5 | 1 | |
3 | +1.5 | 2 | -5.5 |
4 | -1.5 | 2 | |
5 | +2.5 | 3 | -4.5 |
6 | -0.5 | 3 | |
7 | +3.5 | 4 | -3.5 |
Wollte man Linien mit dem Standard-BASIC zeichnen, so vermeidet der Bresenham-Algo- rithmus unnötige Multiplikationen. Der PLOT-Befehl ist im Standard-BASIC durch entspre- cende POKE-Befehle zu ersetzen (s. 2.1).
Programmbeispiele[Bearbeiten | Quelltext bearbeiten]
Moiree-Effekt[Bearbeiten | Quelltext bearbeiten]
300 REM--- MOIREE-EFFEKT --- 310 HIRES 0,0:MULTI 0,6,2:COLOUR 3,7 360 FOR Y=0 TO 199 STEP 5 370 : LINE 000,000,159,Y,4 380 : LINE 159,199,000,Y,4 390 NEXT Y 392 : 395 GET A$: IF A$="" THEN 395 396 COLOUR 14,15 397 IF A$="D" THEN COPY
Lissajous-Figuren[Bearbeiten | Quelltext bearbeiten]
800 REM--- LISSAJOUS-FIGUREN --- 810 X0 = 160: Y0 = 100: A = 150: B = 95 815 D = 77: N = 2: M = 3: T0 = π/180 820 COLOUR 6,15: HIRES 1,2 825 : 830 FOR W=0 TO 180*D STEP D 835 : T = W * T0 840 : X = X0 + A*COS(N*T) 845 : Y = Y0 + B*SIN(M*T) 860 : IF T<>0 THEN LINE X1,Y1, X,Y,1 870 : X1 = X: Y1 = Y 880 NEXT W 885 : 890 GET A$: IF A$="" THEN 890 895 COLOUR 14,15 897 IF A$="D" THEN COPY
Meinung[Bearbeiten | Quelltext bearbeiten]
Petrus: "Die Anzahl der behandelten Themen ist recht umfangreich, die einzelnen Artikel sind kurz und verständlich, die Listings knapp gehalten und daher bequem abzutippen. Für die Grafikprogrammierung in BASIC - insbesondere Simons' Basic - ist dies ein gutes Lehrbuch."