"Grafik mit Turbo Pascal", Winfried Kassera; Horst Schröder, Markt&Technik Verlag AG, 1990, 517 S., ISBN 3-89090-905-1, DM 89,- Inhaltsverzeichnis Vorwort 13 1. Hinweise zum Arbeiten mit diesem Buch 15 1.1 Vereinbarungen, Hinweise 15 1.1.1 Abgrenzungen 15 1.1.2 Arbeitsweise 15 1.1.3 Schreibweisen 16 1.2 Voraussetzungen 17 1.2.1 Hardware-Voraussetzungen 17 1.2.2 Software-Voraussetzungen 19 1.2.3 Persönliche Voraussetzungen 20 1.3 Anlegen einer Startdiskette 20 1.4 Grafikkarten und Turbo-Pascal 23 1.4.1 Einfache Farbgrafik-Adapter (CGA) 23 1.4.2 Erweiterter Color Graphics Adapter (MCGA) 23 1.4.3 Enhanced Graphics Adapter (EGA) 23 1.4.4 Karten mit Video Graphics Array (VGA) 24 1.4.5 Herculeskarte und PC3270-Adapter 24 1.4.6 ATT-Adapter 24 1.4.7 Display Adapter 8514 25 1.4.8 Multifunktionskarten 25 1.4.9 Textmodus 25 1.5 Begleitdisketten 26 2. Grafikmodi 29 2.1 Unterschiede zwischen Text- und Grafikmodus 29 2.2 Umschalten auf den Grafikmodus 29 2.3 Eine Einschaltroutine mit Notausstieg 32 2.4 Überprüfung des Grafikadapters 35 2.5 Die Bildschirmspeicher der Grafikadapter 36 2.5.1 Bildschirmverwaltung des CGA 36 2.5.2 Bildschirmverwaltung bei Hercules 38 2.5.3 Bildschirmverwaltung von EGA- und VGA-Grafik 39 2.5.4 Bildschirmverwaltung bei 256 Farben 42 3. Grundlegende Grafikbefehle 45 3.1 Ausgabe von Einzelpunkten 45 3.2 Zeichnen von geraden Linien 47 3.2.1 Einfache Strecken 47 3.2.2 Streckenzüge 49 3.3 Zeichnung von Vielecken 52 3.4 Einfache Vektorgrafik 53 3.5 Gekrümmte Linien 55 3.5.1 Der Korrekturfaktor »aspect« 55 3.5.2 Kreis und Quadrat 57 3.5.3 Kreis- und Ellipsenbögen 58 3.6 Löschen und Setzen von Linien 60 3.7 Metamorphose von Strichzeichnungen - eine Anwendung 62 4. Komplexe Grafikbefehle 73 4.1 Füllen von Rechteckflächen 73 4.2 Gefüllte Rechtecke 75 4.3 3D-Balken 78 4.4 Muster von Vieleck- und Ellipsenflächen 79 4.5 Linienmuster 82 5. Textzeichen auf dem Grafikschirm 85 5.1 WRITE und WRITELN im Grafikmodus 85 5.2 Reine Grafiktexte 87 5.3 Verwendung der gegebenen Zeichensätze, Ausgabe von numerischen Werten 89 5.4 Variable Größenverhältnisse der Textzeichen und ihre Ausrichtung 92 5.5 Vektorzeichen selbstgemacht 95 5.5.1 Ein »F« im Westernstil 95 5.5.2 Ausgabe eines Strings aus selbstdefinierten Zeichen 99 5.6 Einbinden von Grafiktreibern und Zeichensätzen 100 5.6.1 Konvertierung der *.BGI und *.CHR-Dateien 101 5.6.2 Erstellung eines Treiber- und eines Font-Moduls 102 5.6.3 Ein Universal-Modul für PC-Grafik 103 6. Management von Bildschirmausschnitten 109 6.1 Verwaltung von mehreren Grafikwindows 109 6.1.1 Definition mehrerer Windows 109 6.1.2 Aktivieren eines Windows 110 6.1.3 Löschen eines bestimmten Grafikfensters 110 6.1.4 Umranden eines Windows 111 6.1.5 Zeichnen mit mehreren Windows 112 6.2 Retten von Rechteckausschnitten 115 6.3 Speichern eines Fensters 117 6.4 Laden von gespeicherten Bildaussschnitten 120 6.5 Verwendung einer RAM-Disk 123 7. Grafische Darstellungen im Koordinatensystem 125 7.1 Grafikwelten 125 7.1.1 Koordinatensystem und Bildschirmaufteilung 125 7.1.2 Aktivierung von Grafikwelten 128 7.1.3 Ausgabe eines Pixels mit Weltkoordinaten 129 7.1.4 Die Lage der Koordinatenachsen 130 7.1.5 Markierung der Einheiten 130 7.1.6 Welt-Demo 132 7.2 Grafen mathematischer Funktionen 136 7.2.1 Überlegungen zum Aufbau eines Demo-Programms 136 7.2.2 Das Menü zum Funktionenprogramm 137 7.2.3 Erfassen der Gitternetzdaten im Grafikmodus 138 7.2.4 Eingabeprozeduren für den Grafikmodus 139 7.2.5 Die Prozedur »Gitternetz« 141 7.2.6 Die Berechnung der Funktionswerte 142 7.2.7 Plotten des Grafen 145 7.2.8 Die Programme GRAFEN.PAS und GRAFEN.HGC 145 7.3 Grafik auf dem Drucker 147 7.4 Torten- und Balkengrafik, eine Anwendung 151 7.4.1 Eine Statistik-Demo 151 7.4.2 Aufbau der Tortengrafik 154 7.4.3 Aufbau der Balkengrafik 159 8. Grafik mit der Maus 163 8.1 Die Maus, eine praktische Hilfe 163 8.1.1 Die Programmierung des Maustreiber-Interrupts $33 164 8.1.2 Die Unit »Maus« 165 8.1.3 Wir testen die Maus 171 8.2 Anwendung des Mauszeigers 178 8.2.1 Allgemeines über Bitplanes und den Grafikpuffer 178 8.2.2 Bild und Maske für die Maus 183 8.3 Bewegen beliebiger Bildformen: Sprites oder Shapes 200 8.3.1 Kopieren ohne Maske 201 8.3.2 Kopieren mit Maske 203 8.3.3 Praktische Anwendung 205 8.4 Erfassen von Bildschirmdaten durch XOR-Grafik 215 8.4.1 Der XOR-Modus 216 8.4.2 Prozeduren für XOR-Operationen 216 8.4.3 Die Anwendung: XOR-TEST.PAS, Units Graph2 und Maus 219 9. Dreidimensionale Darstellungen 229 9.1 3-D-Koordinatensysteme 229 9.2 Parallelperspektiven, Grundlagen 232 9.2.1 Kavalierperspektive 232 9.2.2 Die genormte Dimetrie 233 9.2.3 Die genormte Isometrie 234 9.3 Herleitung der Abbildungsgleichungen 234 9.4 Prozeduren zum Zeichnen in Parallelperspektiven 237 9.4.1 Bildschirmkoordinaten in Kavalierperspektive 237 9.4.2 Bildschirmkoordinaten in Isometrie 237 9.4.3 Bildschirmkoordinaten in Dimetrie 238 9.4.4 Bildschirmausgabe als Polygonzug 239 9.4.5 Koordinaten für die Zentralperspektive 240 9.5 Raumbild-Demo (Parallelperspektiven und Zentralperspektive) 242 10. Bewegungen im Raum 247 10.1 Verschiebungen 249 10.2 Drehungen 256 10.2.1 Mathematisches Grundwissen über räumliche Drehungen 256 10.2.2 Demoprogramm für räumliche Drehungen 258 10.3 Laufende Bilder: 3-D-Animation 263 10.3.1 Vorüberlegungen 263 10.3.2 Entwurf eines »Segelflugzeugs« 263 10.3.3 Wie fliegt man einen Looping? 265 10.4 Kunstflug auf dem Bildschirm 269 10.4.1 Geradeausflug und Rolle 269 10.4.2 Überlegungen zu weiteren Flugfiguren 273 10.5 Das Drehbuch zu einem Kunstflugfilm 273 10.6 Ein kleiner Film von Diskette 275 10.6.1 Vorüberlegungen zur Filmproduktion 275 10.6.2 Speichern der »Filmdaten« 275 10.6.3 Einlegen des Films 276 10.6.4 Der Filmprojektor 278 10.6.5 Einladung zur Premiere des Kunstflugfilms 279 11. Komplexe Bewegungen im Raum 283 11.1 Der Blick aus dem Flugzeugcockpit auf die Landschaft 283 11.1.1 Vereinbarungen für die Bewegung durch den Raum 283 11.1.2 Der Sehvektor bestimmt die Blickrichtung 285 11.1.3 Der Sehvektor steht senkrecht auf der Bildschirmebene 286 11.1.4 Ermittlung eines Landschafts-Bildpunkts: Koordinatentransformation 289 11.1.5 Drehung um die Längsachse 292 11.1.6 Die Bildschirmkoordinaten eines Landschaftspunkts 292 11.2 Grundlagen eines Flugsimulators 294 11.2.1 Festlegung von Landschaftspunkten 294 11.2.2 Prozeduren für die Landschaftsbilder 295 11.2.3 Der Trick mit der Mittellinie 300 11.2.4 Bahn frei für den ersten Start 301 12. Schwelgen in Farben 307 12.1 Die höheren Modi der Grafikadapter 307 12.2 Einschalten der Grafikmodi, die nicht von Turbo Pascal unterstützt werden 308 12.3 Setzen eines Pixels mit der Interrupt-Methode 309 12.4 Die RGB-Palette 312 12.5 Abfrage einer Pixelfarbe 315 12.6 Höchstgeschwindigkeit für 256 Farben 316 12.6.1 Schnelle INLINE-Deklarierungen für den Modus $13 317 12.6.2 Höhere Auflösungen mit 256 Farben 319 12.6.3 Eine vorläufige Testroutine in Turbo Pascal 321 12.6.4 Geschwindigkeitsoptimierung mit der INLINE-Deklarierung 322 12.7 Zeichnen von geraden Linien 327 12.8 Routinen für Kreis und Ellipse 333 12.8.1 Kreislinien mit Sinus und Kosinus 333 12.8.2 Kreislinie ohne Winkelfunktionen 334 12.8.3 Ausgefüllte Kreise 337 12.9 Bearbeitung von Bildausschnitten 339 12.9.1 Initialisierungen für Speicherbilder 340 12.9.2 Eine HOLPIC-Prozedur für den Modus $13 341 12.9.3 Eine SETPIC-Prozedur für den Modus $13 342 12.9.4 HOLPIC und SETPIC im Test 343 12.9.5 Bildausschnitte für höhere Auflösungen bei 256 Farben 345 12.10 Bildausschnitte auf Diskette 350 12.10.1 Eine SAVEPIC-Prozedur für den Modus $13 351 12.10.2 Eine LOADPIC-Prozedur für den Modus $13 352 12.10.3 Diskettenbilder für höher auflösende Modi 354 12.11 Schriftzeichen für beliebige Grafikmodi 354 12.11.1 Ein Textzeichen aus dem ROM 355 12.11.2 Eine Schreibprozedur für Strings 356 12.12 Entwerfen von Matrix-Textzeichen 358 12.13 Einbindung selbsterstellter Zeichensätze 367 12.14 Eine Füllroutine für den Modus $13 370 12.15 Units für die 256-Farben-Grafik 372 13. Eine faszinierende Mischung aus Grafik und Mathematik 375 13.1 Komplexe Zahlen, Grundwissen 375 13.2 Bilder aus komplexen Zahlen 378 13.3 Bilder von Apfelmännchen 381 13.3.1 Überblick über die Aufgaben des Programms 381 13.3.2 Festlegen der Bilddaten 382 13.3.3 Das zweidimensionale Apfelmannbild 383 13.3.4 Raumbilder aus der Landschaft des Apfelmännchens 386 13.3.5 Die 3-D-Apfelmann-Prozedur 387 13.3.6 Speichern eines EGA-Bildes 389 13.3.7 Laden eines fertigen Apfelmannbildes 392 13.3.8 Farbänderungen bei EGA/VGA-Bildern 395 13.3.9 Das Apfelmannprogramm im Überblick 402 13.4 Zufallslandschaften BERGE.PAS 404 13.4.1 Fraktale Oberflächen 404 13.4.2 Die Prozeduren des »Landschaftgenerators« 405 14. Interessante Anwendungen mit Tricks und Tips 415 14.1 Bordinstrumente, objektorientiert programmiert 415 14.1.1 Deklarierung der Objekttypen »Housing« und »Zeiger« 415 14.1.2 Eine Initialisierungsrafinesse 419 14.1.3 Schnelles, sauberes Beschriften einer Rundskala 422 14.2 Zwei-Zeiger-Instrument mit Hintergrundrestaurierung 425 14.2.1 Retten von Linien 426 14.2.2 Rundanzeigen mit variablen Formen 429 14.3 Aufbau von Pull-down-Menüs im Grafikmodus 435 14.3.1 Das Testprogramm 436 14.3.2 Die Datenstruktur 441 14.3.3 Nachträgliche Manipulationen 443 14.3.4 Ein Menü wird auf dem Heap installiert 444 14.3.5 Das Menü in »action« 447 14.4 Aufbau und Funktion von Requestern 455 14.4.1 Einige Requester-Typen 456 14.4.2 Das Demo-Programm 457 14.4.3 Erläuterungen an einem exemplarischen Beispiel 463 14.4.4 Der Star der Requester, die »EGAPalette« 466 Anhang A Die Grafikroutinen von Turbo Pascal 473 B Units 487 C Tastaturcode 501 D ASCII-Zeichensatz 507 Stichwortverzeichnis 511