home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* DEMOCGA.MOD *)
- (* CGA-Grafik mit Fitted Modula *)
- (* ------------------------------------------------------ *)
- MODULE DemoCGA;
-
- FROM Graf0CGA IMPORT GrafikEin, GrafikAus, AspectRatio,
- SPALTEN, ZEILEN, WEISS, SCHWARZ,
- FARBEN,
- SchreibeString, BildschirmLoeschen,
- HorLinie, VertLinie, PunktInvertieren,
- Punkt;
-
- FROM TermIO IMPORT Read;
-
- FROM MathLib0 IMPORT sin;
-
- FROM GrafLib0 IMPORT Rahmen, Linie, Kreis;
-
- VAR
- A, B : CARDINAL;
-
- CONST
- OffOben = 14;
- Pi = 3.142;
-
-
- PROCEDURE WeiterMitTaste;
- VAR
- c : CHAR;
- BEGIN
- SchreibeString('Weiter mit beliebiger Taste',
- 50, 1, WEISS);
- Read(c)
- END WeiterMitTaste;
-
- PROCEDURE LinienDemo;
- CONST
- xc = 200;
- yc = 70;
- VAR
- ii : CARDINAL;
- BEGIN
- Rahmen(0, OffOben, SPALTEN-1, ZEILEN-1, WEISS);
- SchreibeString('Demo für CGA - Linien', 1, 1, WEISS);
- ii := OffOben;
- REPEAT
- Linie(xc, yc, 0, ii, WEISS);
- Linie(SPALTEN-1, ii, xc, yc, WEISS);
- INC(ii, 9);
- UNTIL ii >= ZEILEN;
- ii := 0;
- REPEAT
- Linie(ii, ZEILEN-1, xc, yc, WEISS);
- Linie(ii, OffOben, xc, yc, WEISS);
- INC(ii, 12);
- UNTIL ii >= SPALTEN;
- WeiterMitTaste;
- BildschirmLoeschen;
- END LinienDemo;
-
- PROCEDURE EllipsenDemo;
- VAR
- i : CARDINAL;
- BEGIN
- Rahmen(0, OffOben, SPALTEN-1, ZEILEN-1, WEISS);
- SchreibeString('Demo für CGA - Ellipsen/Kreise',
- 1, 1, WEISS);
- FOR i := 1 TO TRUNC(
- FLOAT((ZEILEN-OffOben) DIV 2)/AspectRatio)
- BY 8 DO
- Kreis(SPALTEN DIV 2, (ZEILEN+OffOben) DIV 2, i, WEISS);
- END;
- WeiterMitTaste;
- BildschirmLoeschen;
- END EllipsenDemo;
-
- PROCEDURE PunktDemo;
- CONST
- XOff = 50;
- SPOff = SPALTEN - 2 * XOff;
- dC = 0.03;
- fact = 0.9;
- VAR
- C : REAL;
- BEGIN
- Rahmen(0, OffOben, SPALTEN-1, ZEILEN-1, WEISS);
- SchreibeString('Demo für CGA - Punktroutinen',
- 1, 1, WEISS);
- SchreibeString(' f(x) = sin x ', 55, 17, SCHWARZ);
- SchreibeString(' g(x) = x² ', 55, 19, SCHWARZ);
- HorLinie(XOff, SPALTEN-XOff, (ZEILEN+OffOben) DIV 2,
- WEISS);
- VertLinie(SPALTEN DIV 2, OffOben*2, ZEILEN-OffOben,
- WEISS);
- C := -Pi;
- REPEAT
- PunktInvertieren(
- TRUNC(FLOAT(SPALTEN DIV 2)+C*FLOAT(SPOff DIV 2)/Pi),
- TRUNC(FLOAT((ZEILEN+OffOben) DIV 2)
- -sin(C)*fact*FLOAT((ZEILEN-OffOben) DIV 2)));
- Punkt(
- TRUNC(FLOAT(SPALTEN DIV 2)+C*FLOAT(SPOff DIV 2)/Pi),
- TRUNC(FLOAT((ZEILEN+OffOben) DIV 2)
- -C*C*0.1*fact*FLOAT((ZEILEN-OffOben) DIV 2)),
- WEISS);
- C := C + dC;
- UNTIL ( C > Pi );
- WeiterMitTaste;
- END PunktDemo;
-
- BEGIN
- GrafikEin;
- LinienDemo;
- EllipsenDemo;
- PunktDemo;
- GrafikAus;
- END DemoCGA.
- (* ------------------------------------------------------ *)
- (* Ende von DEMOCGA.MOD *)
-