home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 11 / praxis / democga.mod < prev    next >
Encoding:
Text File  |  1990-08-09  |  3.2 KB  |  121 lines

  1. (* ------------------------------------------------------ *)
  2. (*                  DEMOCGA.MOD                           *)
  3. (*           CGA-Grafik mit Fitted Modula                 *)
  4. (* ------------------------------------------------------ *)
  5. MODULE DemoCGA;
  6.  
  7. FROM Graf0CGA IMPORT GrafikEin, GrafikAus, AspectRatio,
  8.                      SPALTEN, ZEILEN, WEISS, SCHWARZ,
  9.                      FARBEN,
  10.                      SchreibeString, BildschirmLoeschen,
  11.                      HorLinie, VertLinie, PunktInvertieren,
  12.                      Punkt;
  13.  
  14. FROM TermIO   IMPORT Read;
  15.  
  16. FROM MathLib0 IMPORT sin;
  17.  
  18. FROM GrafLib0 IMPORT Rahmen, Linie, Kreis;
  19.  
  20. VAR
  21.   A, B : CARDINAL;
  22.  
  23. CONST
  24.   OffOben   = 14;
  25.   Pi        = 3.142;
  26.  
  27.  
  28.   PROCEDURE WeiterMitTaste;
  29.   VAR
  30.     c : CHAR;
  31.   BEGIN
  32.     SchreibeString('Weiter mit beliebiger Taste',
  33.                     50, 1, WEISS);
  34.     Read(c)
  35.   END WeiterMitTaste;
  36.  
  37.   PROCEDURE LinienDemo;
  38.   CONST
  39.     xc = 200;
  40.     yc = 70;
  41.   VAR
  42.     ii : CARDINAL;
  43.   BEGIN
  44.     Rahmen(0, OffOben, SPALTEN-1, ZEILEN-1, WEISS);
  45.     SchreibeString('Demo für CGA - Linien', 1, 1, WEISS);
  46.     ii := OffOben;
  47.     REPEAT
  48.       Linie(xc,        yc,  0, ii, WEISS);
  49.       Linie(SPALTEN-1, ii, xc, yc, WEISS);
  50.       INC(ii, 9);
  51.     UNTIL ii >= ZEILEN;
  52.     ii := 0;
  53.     REPEAT
  54.       Linie(ii, ZEILEN-1, xc, yc, WEISS);
  55.       Linie(ii, OffOben,  xc, yc, WEISS);
  56.       INC(ii, 12);
  57.     UNTIL ii >= SPALTEN;
  58.     WeiterMitTaste;
  59.     BildschirmLoeschen;
  60.   END LinienDemo;
  61.  
  62.   PROCEDURE EllipsenDemo;
  63.   VAR
  64.     i : CARDINAL;
  65.   BEGIN
  66.     Rahmen(0, OffOben, SPALTEN-1, ZEILEN-1, WEISS);
  67.     SchreibeString('Demo für CGA - Ellipsen/Kreise',
  68.                    1, 1, WEISS);
  69.     FOR i := 1 TO TRUNC(
  70.                   FLOAT((ZEILEN-OffOben) DIV 2)/AspectRatio)
  71.                                                      BY 8 DO
  72.      Kreis(SPALTEN DIV 2, (ZEILEN+OffOben) DIV 2, i, WEISS);
  73.     END;
  74.     WeiterMitTaste;
  75.     BildschirmLoeschen;
  76.   END EllipsenDemo;
  77.  
  78.   PROCEDURE PunktDemo;
  79.   CONST
  80.     XOff  = 50;
  81.     SPOff = SPALTEN - 2 * XOff;
  82.     dC    = 0.03;
  83.     fact  = 0.9;
  84.   VAR
  85.     C     : REAL;
  86.   BEGIN
  87.     Rahmen(0, OffOben, SPALTEN-1, ZEILEN-1, WEISS);
  88.     SchreibeString('Demo für CGA - Punktroutinen',
  89.                    1, 1, WEISS);
  90.     SchreibeString(' f(x) = sin x ', 55, 17, SCHWARZ);
  91.     SchreibeString(' g(x) =   x²  ', 55, 19, SCHWARZ);
  92.     HorLinie(XOff, SPALTEN-XOff, (ZEILEN+OffOben) DIV 2,
  93.              WEISS);
  94.     VertLinie(SPALTEN DIV 2, OffOben*2, ZEILEN-OffOben,
  95.               WEISS);
  96.     C := -Pi;
  97.     REPEAT
  98.       PunktInvertieren(
  99.        TRUNC(FLOAT(SPALTEN DIV 2)+C*FLOAT(SPOff DIV 2)/Pi),
  100.        TRUNC(FLOAT((ZEILEN+OffOben) DIV 2)
  101.                -sin(C)*fact*FLOAT((ZEILEN-OffOben) DIV 2)));
  102.       Punkt(
  103.        TRUNC(FLOAT(SPALTEN DIV 2)+C*FLOAT(SPOff DIV 2)/Pi),
  104.        TRUNC(FLOAT((ZEILEN+OffOben) DIV 2)
  105.                -C*C*0.1*fact*FLOAT((ZEILEN-OffOben) DIV 2)),
  106.                WEISS);
  107.       C := C + dC;
  108.     UNTIL ( C > Pi );
  109.     WeiterMitTaste;
  110.   END PunktDemo;
  111.  
  112. BEGIN
  113.   GrafikEin;
  114.   LinienDemo;
  115.   EllipsenDemo;
  116.   PunktDemo;
  117.   GrafikAus;
  118. END DemoCGA.
  119. (* ------------------------------------------------------ *)
  120. (*                 Ende von DEMOCGA.MOD                   *)
  121.