home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* PLOT02.PAS *)
- (* Plottergrafik : sechsfache Dreiecksspirale *)
- (* Modus : EGA 640 x 350 *)
- (* *)
- (* (c) 1991 Bernd HaENDel & TOOLBOX *)
- (* ------------------------------------------------------ *)
- {$N+,E+}
-
- USES
- Crt, Dos, Graph;
-
- VAR
- Color1, Color2, Color3, Color4 : WORD;
- Color5, Color6 : WORD;
- MaxColorV, MaxColorH : WORD;
- Test : TEXT;
- GraphDriver, GraphMode : INTEGER;
- MinMode, MaxMode, I, K, NN : INTEGER;
- X0, Y0, DX0, DY0, XX, YY : INTEGER;
- Cursor, FTaste, KeyNr : INTEGER;
- ModeName : STRING;
- Zeichen, Key : CHAR;
- SL, SX, S, SS, SH : REAL;
- X1, X2, X3, XXN, DX1 : REAL;
- Y1, Y2, Y3, YYN, DY1 : REAL;
-
- {$I PLOTXX.INC }
-
- PROCEDURE AnfangsDreieck(N : INTEGER);
- { Anfangsdreieck zeichnen }
- BEGIN
- SS :=0.86*SL; { Seitenverhältnis }
- X1 := 0.0;
- Y1 := 0.0; { Punkt 1 = Koordinaten-Ursprung }
- CASE N OF
- 1 : BEGIN
- X2 := -SS; Y2 := SH; X3 := -SS; Y3 := -SH;
- END;
- 2 : BEGIN
- X2 := 0.0; Y2 := -SL; X3 := -SS; Y3 := -SH;
- END;
- 3 : BEGIN
- X2 := 0.0; Y2 := -SL; X3 := SS; Y3 := -SH;
- END;
- 4 : BEGIN
- X2 := SS; Y2 := SH; X3 := SS; Y3 := -SH;
- END;
- 5 : BEGIN
- X2 := SS; Y2 := SH; X3 := 0.0; Y3 := SL;
- END;
- 6 : BEGIN
- X2 := -SS; Y2 := SH; X3 := 0.0; Y3 := SL;
- END;
- END;
- SetColor(Color1); PlotLine(X1, Y1, X2, Y2);
- SetColor(Color2); PlotLine(X2, Y2, X3, Y3);
- SetColor(Color3); PlotLine(X3, Y3, X1, Y1);
- SetColor(Color6);
- OutTextXY( 10, 10, 'Plot02');
- OutTextXY( 10, 335, 'Sechsfache Dreieckspirale');
- OutTextXY(450, 335, 'B. Haendel & TOOLBOX');
- END;
-
- PROCEDURE NeuesDreieck;
- { Verkleinertes neues Dreieck zeichnen }
- VAR
- XX1, XX2, XX3, DX : REAL;
- YY1, YY2, YY3, DY : REAL;
- BEGIN
- DX := Abs(X2-X1); DY := Abs(Y2-Y1);
- S := Sqrt(DX*DX + DY*DY); SH := 0.50*S;
- NeuerPunkt(X1, Y1, X2, Y2); XX1 := XXN; YY1 := YYN;
- NeuerPunkt(X2, Y2, X3, Y3); XX2 := XXN; YY2 := YYN;
- NeuerPunkt(X3, Y3, X1, Y1); XX3 := XXN; YY3 := YYN;
- X1 := XX1; X2 := XX2; X3 := XX3;
- Y1 := YY1; Y2 := YY2; Y3 := YY3;
- SetColor(Color1); PlotLine(X1, Y1, X2, Y2);
- SetColor(Color2); PlotLine(X2, Y2, X3, Y3);
- SetColor(Color3); PlotLine(X3, Y3, X1, Y1);
- END;
-
- BEGIN
- ClrScr;
- Grafmod; { Grafik-Modus setzen }
-
- Color1 := Green; { Farbe Seite 1 }
- Color2 := Red; { Farbe Seite 2 [Hintergrund] }
- Color3 := Red; { Farbe Seite 3 }
-
- Color5 := Black; { Hintergrundfarbe }
- Color6 := Cyan; { Schriftfarbe }
-
- MaxColorV := 15; { max Vordergrundfarbe }
- MaxColorH := 7; { max Hintergrundfarbe }
-
- KoordAchsen; { Koordinatenachsen festlegen }
-
- NN := 0; KeyNr := 59; { Schleife bis F10 }
- WHILE KeyNr <> 68 DO BEGIN
- IF (KeyNr > 58) AND (KeyNr < 65) THEN BEGIN
- HinterGrund; { Hintergrund ausfüllen }
- Erklaerung; { Erklaärung der F-Tasten }
- END;
- FOR K := 1 TO 6 DO BEGIN
- { Schleife über die 6 }
- { einzelnen Dreiecke }
- SL := 50.00; { Seitenlänge des Dreiecks }
- SX := 1.40; { Verkürzung der Seitenlänge }
- SH := 0.50 * SL;
-
- IF (KeyNr > 58) AND (KeyNr < 65) THEN BEGIN
- AnfangsDreieck(K); { Anfangsdreieck zeichnen }
- WHILE SX < SH DO { Jeweils ein verkleinertes }
- NeuesDreieck; { neues Dreieck zeichnen }
- END;
- END; { For K }
- REPEAT UNTIL KeyPressed;
- KeyNr := TastKey; { Tastatureingabe }
- Farben; { Farben entspr. F-Tasten
- F1..F5 neu wählen }
-
- Inc(NN); IF NN > 100 THEN KeyNr := 68;
- END;
-
- CloseGraph; { Grafik-Modus zurücksetzen }
- TextColor(White);
- TextBackGround(Black);
- ClrScr;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von PLOT02.PAS *)