home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 02 / tricks / plot02.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-11-07  |  4.7 KB  |  133 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   PLOT02.PAS                           *)
  3. (*          Plottergrafik : sechsfache Dreiecksspirale    *)
  4. (*          Modus         : EGA 640 x 350                 *)
  5. (*                                                        *)
  6. (*         (c) 1991 Bernd HaENDel & TOOLBOX               *)
  7. (* ------------------------------------------------------ *)
  8. {$N+,E+}
  9.  
  10. USES
  11.   Crt, Dos, Graph;
  12.  
  13. VAR
  14.   Color1, Color2, Color3, Color4 : WORD;
  15.   Color5, Color6                 : WORD;
  16.   MaxColorV, MaxColorH           : WORD;
  17.   Test                           : TEXT;
  18.   GraphDriver, GraphMode         : INTEGER;
  19.   MinMode, MaxMode, I, K, NN     : INTEGER;
  20.   X0, Y0, DX0, DY0, XX, YY       : INTEGER;
  21.   Cursor, FTaste, KeyNr          : INTEGER;
  22.   ModeName                       : STRING;
  23.   Zeichen, Key                   : CHAR;
  24.   SL, SX, S, SS, SH              : REAL;
  25.   X1, X2, X3, XXN, DX1           : REAL;
  26.   Y1, Y2, Y3, YYN, DY1           : REAL;
  27.  
  28. {$I PLOTXX.INC }
  29.  
  30.   PROCEDURE AnfangsDreieck(N : INTEGER);
  31.                                  { Anfangsdreieck zeichnen }
  32.   BEGIN
  33.     SS :=0.86*SL;                       { Seitenverhältnis }
  34.     X1 := 0.0;
  35.     Y1 := 0.0;            { Punkt 1 = Koordinaten-Ursprung }
  36.     CASE N OF
  37.       1 : BEGIN
  38.             X2 := -SS;  Y2 :=  SH;  X3 := -SS;  Y3 := -SH;
  39.           END;
  40.       2 : BEGIN
  41.             X2 := 0.0;  Y2 := -SL;  X3 := -SS;  Y3 := -SH;
  42.           END;
  43.       3 : BEGIN
  44.             X2 := 0.0;  Y2 := -SL;  X3 :=  SS;  Y3 := -SH;
  45.           END;
  46.       4 : BEGIN
  47.             X2 :=  SS;  Y2 :=  SH;  X3 :=  SS;  Y3 := -SH;
  48.           END;
  49.       5 : BEGIN
  50.             X2 :=  SS;  Y2 :=  SH;  X3 := 0.0;  Y3 :=  SL;
  51.           END;
  52.       6 : BEGIN
  53.             X2 := -SS;  Y2 :=  SH;  X3 := 0.0;  Y3 :=  SL;
  54.           END;
  55.     END;
  56.     SetColor(Color1);  PlotLine(X1, Y1, X2, Y2);
  57.     SetColor(Color2);  PlotLine(X2, Y2, X3, Y3);
  58.     SetColor(Color3);  PlotLine(X3, Y3, X1, Y1);
  59.     SetColor(Color6);
  60.     OutTextXY( 10,  10, 'Plot02');
  61.     OutTextXY( 10, 335, 'Sechsfache Dreieckspirale');
  62.     OutTextXY(450, 335, 'B. Haendel & TOOLBOX');
  63.   END;
  64.  
  65.   PROCEDURE NeuesDreieck;
  66.                     { Verkleinertes neues Dreieck zeichnen }
  67.   VAR
  68.     XX1, XX2, XX3, DX : REAL;
  69.     YY1, YY2, YY3, DY : REAL;
  70.   BEGIN
  71.     DX := Abs(X2-X1);  DY := Abs(Y2-Y1);
  72.     S := Sqrt(DX*DX + DY*DY);  SH := 0.50*S;
  73.     NeuerPunkt(X1, Y1, X2, Y2);  XX1 := XXN;  YY1 := YYN;
  74.     NeuerPunkt(X2, Y2, X3, Y3);  XX2 := XXN;  YY2 := YYN;
  75.     NeuerPunkt(X3, Y3, X1, Y1);  XX3 := XXN;  YY3 := YYN;
  76.     X1 := XX1;  X2 := XX2;  X3 := XX3;
  77.     Y1 := YY1;  Y2 := YY2;  Y3 := YY3;
  78.     SetColor(Color1);  PlotLine(X1, Y1, X2, Y2);
  79.     SetColor(Color2);  PlotLine(X2, Y2, X3, Y3);
  80.     SetColor(Color3);  PlotLine(X3, Y3, X1, Y1);
  81.   END;
  82.  
  83. BEGIN
  84.   ClrScr;
  85.   Grafmod;                  { Grafik-Modus setzen         }
  86.  
  87.   Color1 := Green;          { Farbe Seite 1               }
  88.   Color2 := Red;            { Farbe Seite 2 [Hintergrund] }
  89.   Color3 := Red;            { Farbe Seite 3               }
  90.  
  91.   Color5 := Black;          { Hintergrundfarbe            }
  92.   Color6 := Cyan;           { Schriftfarbe                }
  93.  
  94.   MaxColorV := 15;          { max Vordergrundfarbe        }
  95.   MaxColorH :=  7;          { max Hintergrundfarbe        }
  96.  
  97.   KoordAchsen;              { Koordinatenachsen festlegen }
  98.  
  99.   NN := 0;  KeyNr := 59;    { Schleife bis F10            }
  100.   WHILE KeyNr <> 68 DO BEGIN
  101.     IF (KeyNr > 58) AND (KeyNr < 65) THEN BEGIN
  102.       HinterGrund;          { Hintergrund ausfüllen       }
  103.       Erklaerung;           { Erklaärung der F-Tasten     }
  104.     END;
  105.     FOR K := 1 TO 6 DO BEGIN
  106.                             { Schleife über die 6         }
  107.                             { einzelnen Dreiecke          }
  108.       SL := 50.00;          { Seitenlänge des Dreiecks    }
  109.       SX := 1.40;           { Verkürzung der Seitenlänge  }
  110.       SH := 0.50 * SL;
  111.  
  112.       IF (KeyNr > 58) AND (KeyNr < 65) THEN BEGIN
  113.         AnfangsDreieck(K);  { Anfangsdreieck zeichnen     }
  114.         WHILE SX < SH DO    { Jeweils ein verkleinertes   }
  115.            NeuesDreieck;    { neues Dreieck zeichnen      }
  116.       END;
  117.     END;  { For K }
  118.     REPEAT UNTIL KeyPressed;
  119.     KeyNr := TastKey;         { Tastatureingabe           }
  120.     Farben;                   { Farben entspr. F-Tasten
  121.                                 F1..F5 neu wählen         }
  122.  
  123.     Inc(NN);  IF NN > 100 THEN KeyNr := 68;
  124.   END;
  125.  
  126.   CloseGraph;               { Grafik-Modus zurücksetzen   }
  127.   TextColor(White);
  128.   TextBackGround(Black);
  129.   ClrScr;
  130. END.
  131. (* ------------------------------------------------------ *)
  132. (*                 Ende von PLOT02.PAS                    *)
  133.