Schöne Spielerei. ![]()
BIF, ich möchte an der Stelle trotzdem mal darauf hinweisen, daß es sich bei deinen Bildern nicht um Funktionen handelt, denn Funktionen sind per definitionem eindeutige Zuordnungen, d.h. im konkreten Fall dürfte jeder x-Koordinate nur eine y-Koordinate zugeordnet werden. Tatsächlich handelt es sich hier um parametrische Graphen, mit (x,y) := (x(t),y(t)), wobei x und y zwei (möglicherweise periodische) Funktionen sind, die von t abhängen. Damit sind dann auch mehrere y-Koordinaten pro x-Koordinate möglich.
Durch Addition mehrerer SIN(n*t)- und COS(n*t)-Funktionen (mit n ganzzahlig) für x(t) und y(t) kann man nun so ziemlich einfach rotationssymmetrische Muster erzeugen.
Hier als Beispiel mal wie ich deine 5-blättrige Blume auf dem VC-20 mit MINIGRAFIK realisiert habe:
1 @ON:@CLR
2 K={PI}/72:T=0:GOSUB8
3 FORT=1TO72
4 X1=X2:Y1=Y2:GOSUB8
5 @1,X1,Y1TOX2,Y2
6 NEXT
7 GETA$:ON-(A$="")GOTO7:@RETURN:END
8 R=SIN(5*K*T)
9 X2=80.5-57*R*SIN(K*T):Y2=96.5-95*R*COS(K*T):RETURN
Ergebnis:
Bitte melde dich an, um diesen Anhang zu sehen.
Zur Erklärung:
- Zeile 1 schaltet den Grafik-Modus ein und löscht den Bildschirm
- Zeile 2 definiert die Schrittkonstante K (ein 1/144 vom Vollkreiswinkel 2*pi im Bogenmaß) und rechnet den Startpunkt für den Linienzug aus.
- Zeilen 3 und 6 rechnen weitere 72 Stützpunkte des Graphen aus (nur für einen Halbkreis!)
- Zeile 4 merkt sich den zuvor berechneten Punkt und rechnet den nächsten Punkt aus
- Zeile 5 verbindet den aktuellen mit dem vorherigen Punkt
- Zeile 7 wartet auf einen Tastendruck und kehrt dann zum Text-Modus zurück
- Zeile 8 rechnet einen "Radius" aus. Wir "laufen" in den Zeilen 3 und 6 den Halbkreis entlang und brauchen 5 Minima/Maxima um an die Blattspitzen zu kommen.
- Zeile 9 "dreht" den Radius und rechnet in Bildschirmkoordinaten um.
Im Anhang sind die BASIC-Erweiterung und das Beispielprogramm drin.
P.S. mein MINIGRAFIK steht in der Tradition des gleichnamigen Programms in der 64'er 5/85, ist aber komplett neu implementiert für höhere Auflösung (160x192 statt 128x128) und hat auch ein paar Befehle mehr.