Zum Inhalt

Transformationen nach Funktionen

Dieser Transformationsmodus unterscheidet sich deutlich von allen anderen Transformationsmodi. Während alle anderen Transformationsmodi geometrische Transformationen direkt kodieren, kann dieser Modus frei durch eine beliebige Funktion definiert werden. Die Funktion muss als CindyScript-Code angegeben werden.

Um eine solche Funktion zu definieren, muss man den Modus wählen und irgendwo in einer Ansicht klicken. Dann öffnet sich ein Fenster, in das man die Funktion eingeben kann. Die Funktion muss eine Funktion mit genau einer freien Variablen sein. Der Name dieser Variablen kann „#" (die generische Laufvariable in CindyScript), „x", „y", „z", „t" oder „v" sein. Die Auswahl wird bewusst etwas einschränkend gehalten, um Interferenzen mit den Namen geometrischer Elemente zu vermeiden.


Eingabefenster für Funktionstransformationen

In der Funktion kann die Variable entweder ein Vektor mit (x, y)-Koordinaten oder eine komplexe Zahl sein. Wenn die Funktion einen Vektor erfordert, muss sie auch einen Vektor zurückgeben. Wenn sie eine komplexe Zahl erfordert, muss sie auch eine komplexe Zahl zurückgeben.

Wie üblich wird durch die Definition einer Transformation eine Ansicht-Schaltfläche erstellt. Im Gegensatz zu anderen Transformationsmodi können die durch eine Funktion definierten Transformationen nur Punkte abbilden. Kompliziertere Objekte wie Linien, Kreise und Kegelschnitte können nicht abgebildet werden. Die Funktion muss beschreiben, wie der Punkt auf einen anderen Punkt abgebildet wird. Hier sind zwei Varianten zulässig: Entweder wird der Punkt als zweidimensionaler Vektor behandelt, oder er wird als komplexe Zahl behandelt (wobei die x-Koordinate den Realteil und die y-Koordinate den Imaginärteil darstellt).

Das folgende Eingabeformular zeigt eine einfache Definition, in der eine Funktion durch ein Polynom definiert wird, das einen abgebildeten Punkt als komplexe Zahl interpretiert.


Definieren einer komplexen Funktion

Die Anwendung dieser Transformation auf einen Punkt erzeugt einen neuen Punkt, der das Ergebnis der Funktion darstellt. Das Bild unten zeigt einen Punkt und sein Bild. Außerdem ist die Spur eines Kreises in dem Bild zu sehen.


Anwendung der Funktion auf einen Punkt

Funktionstransformationen und iterierte Funktionssysteme (IFS)

Funktionstransformationen sind besonders nützlich für die Definition von iterierten Funktionssystemen. Ein typisches Beispiel ist die Definition von „Julia-Mengen". Eine Julia-Menge kann als das iterierte Funktionssystem definiert werden, das durch die beiden Funktionen +sqrt(z-c) und -sqrt(z-c) erzeugt wird. Hier ist „c" eine beliebige Konstante und „z" ist die (komplexe) Eingabevariable. Nach Definition dieser beiden Funktionen als Transformationsfunktionen kann man diese Funktionen im Modus für iterierte Funktionssysteme verwenden. Im folgenden Beispiel steuern wir die Konstante „c" durch einen Punkt A der Konstruktion. Die beiden Funktionen sind definiert durch

sqrt(#-complex(A))

und

-sqrt(#-complex(A))

Das resultierende Bild hängt von der Position von A ab. Eine Instanz ist unten dargestellt:

Ein fortgeschritteneres Bild kann durch die Zusammenstellung des iterierten Funktionssystems mit einem in CindyScript programmierten Farbdiagramm erzeugt werden. Das Farbdiagramm iteriert die Funktion z^2+c mit verschiedenen Startwerten und zählt, wie lange es dauert, bis der absolute Wert der Funktion die Zahl 2 übersteigt.


Eine Julia-Menge, die durch Transformationsfunktionen definiert ist
m=40;
f(x):=x^2+complex(A);
g(y,n):=if(
  or(|y|>2,n==m),
   n,g(f(y),n+1)
);
colorplot((1-g(#_1+i*#_2,0)/m),B,C,startres->20,pxlres->1)

Das resultierende Bild, das mit dem iterierten Funktionssystem überlagert ist, sieht wie folgt aus.


Eine Julia-Menge, die durch Transformationsfunktionen und ein Farbdiagramm definiert ist

🤖 Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten