Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: So 26.01.20 20:07 
Moin,
das Programm erzeugt Polygone aus maximal 20 Punkten. Die Punkte werden als Polarkoordinaten in kartesische umgerechnet.
Die Verschiebung wird so berechnet: Punkte[L].X:=round((1-Verschiebung)*Punkte[L].X+Verschiebung*Punkte[L+1].X);
PolyKunst
So entsteht der Eindruck einer Verdrehung des Polygons in sich.
Zusätzlich sind einige Einstellungen zum Experimentieren möglich.

Viel Spaß beim Testen.
Gruß Fiete
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)

Für diesen Beitrag haben gedankt: Gausi, Narses, Sinspin
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 27.01.20 12:51 
Oh, das erinnert mich an meine Schulzeit! :zustimm:

Ich weiß zwar nicht mehr sicher, ob wir das damals in Informatik (9./10. Klasse) mit TurboPascal oder später im Mathe-LK mit Derive gemacht haben, aber an diese Bilder kann ich mich noch sehr gut erinnern.

_________________
We are, we were and will not be.
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Di 28.01.20 15:02 
Moin Gausi,
diese Art Grafiken habe ich in der Unterprima 1991 durchgenommen, programmiert mit TP7.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
{$R+,G+,Q+}
PROGRAM VIER_ECK_GRAFIK;
 USES CRT,GRAPH,GRINI;
 CONST MAX=20;ESC=#27;
 VAR E,K,J,L:WORD;
     ALTRADIUS,RADIUS:INTEGER;
     ALFA,V,ZUWACHS:REAL;
     PUNKTE:ARRAY[1..MAX]OF POINTTYPE;
     TASTE:CHAR;

 FUNCTION IM_FENSTER(K:BYTE):BOOLEAN;
  BEGIN
   IM_FENSTER:=(PUNKTE[K].X>10AND (PUNKTE[K].X<MAXX-10AND (PUNKTE[K].Y>10AND (PUNKTE[K].Y<MAXY-10)
  END;

 BEGIN
  CLRSCR;RANDOMIZE;GRAPHEIN(0,0,'C:\TP7\BGI');
  REPEAT
   E:=RANDOM(MAX-4)+4;ZUWACHS:=360/E;ALFA:=0;
   FOR K:=1 TO E DO
    BEGIN
     RADIUS:=MAXY DIV 4;
     REPEAT
      PUNKTE[K].X:=ROUND(RADIUS*COS(ALFA*PI/180))+MAXX DIV 2;
      PUNKTE[K].Y:=ROUND(RADIUS*SIN(ALFA*PI/180))+MAXY DIV 2;
      IF IM_FENSTER(K) THEN ALTRADIUS:=RADIUS;
      RADIUS:=RADIUS+RANDOM(60);
     UNTIL NOT IM_FENSTER(K);
     RADIUS:=ALTRADIUS;
     PUNKTE[K].X:=ROUND(RADIUS*COS(ALFA*PI/180))+MAXX DIV 2;
     PUNKTE[K].Y:=ROUND(RADIUS*SIN(ALFA*PI/180))+MAXY DIV 2;
     ALFA:=ALFA+ZUWACHS
    END;
   CLEARDEVICE;J:=RANDOM(25*E)+20*E; { ANZAHL DER STRICHE }
   V:=RANDOM;        { VERSCHIEBUNG }
   PUNKTE[E+1].X:=PUNKTE[1].X;PUNKTE[E+1].Y:=PUNKTE[1].Y;
   SETCOLOR(RANDOM(15)+1);
   DRAWPOLY(E+1,PUNKTE);TASTE:=READKEY;
   FOR K:=1 TO J DO
    BEGIN
     FOR L:=1 TO E DO
      BEGIN
       PUNKTE[L].X:=ROUND((1-V)*PUNKTE[L].X+V*PUNKTE[L+1].X);
       PUNKTE[L].Y:=ROUND((1-V)*PUNKTE[L].Y+V*PUNKTE[L+1].Y)
      END;
     PUNKTE[E+1].X:=PUNKTE[1].X;
     PUNKTE[E+1].Y:=PUNKTE[1].Y;
     DRAWPOLY(E+1,PUNKTE);
    END;
   DELAY(1000);IF KEYPRESSED THEN TASTE:=READKEY
  UNTIL TASTE=ESC
 END.


Unterricht soll ja bekanntlich Spaß machen und motivieren!
Gruß Fiete

_________________
Fietes Gesetz: use your brain (THINK)