Neues SuSE-Logo?

Seit ich meine erste SuSE-Distribution gekauft habe (ich glaube es war Version 4.1) bin ich begeistert von den mathematischen Figuren auf der Packung. Beim Herumspielen mit POV-Ray habe ich die Quartics entdeckt, mit denen solche Figuren erstellt werden können. Nach ein paar Experimenten habe ich eine Figur gefunden die sich ganz gut als nächstes SuSE-Logo machen würde.

Neues SuSE-Logo?

smr

Ein Quartic in POV-Ray ist eine Polynomfunktion 4.Grades in x, y und z. Das heißt (x+y+z)4. Multipliziert man dies aus, so erhält man 35 gemischte Terme mit 35 dazugehörigen Koeffizienten. Diese Koeffizienten bestimmen das Lösungsverhalten von (x+y+z)4=0. Die Lösung (d.h. die Koordinaten x, y und z für die (x+y+z)4 auch wirklich gleich Null ist) beschreibt eine Fläche im dreidimensionalen Raum.

Spielt man mit den Koeffizienten herum so verändert sich natürlich das Lösungsverhalten der Gleichung und man erhält eine neue Fläche im Raum. Wenn man ein bisschen herumprobiert merkt man allerdings schnell, dass die meissten Flächen die man erhält ziemlich kaputt aussehen und weit davon entfernt sind irgendwie hübsch auszusehen, oder gar nur symmetrisch zu sein.

Nach Flächen wie auf den SuSE-Packungen muss man systematisch suchen, und das erfordert eine Menge mathematisches Spezialwissen, dass auch ich nicht habe. Man kann aber auch ohne Spezialwissen mit etwas Systematik an den Koeffizienten herumspielen, z.B. indem man alle Koeffizienten für Terme mit einem ungeraden Exponenten auf Null setzt. Oder alle Koeffizienten für Terme mit einer vierten Potenz auf Null setzt. Oder auf eins. Oder Wurzel aus zwei. Oder das Vorzeichen ändert. Oder... oder...

So bin ich bei meiner Figur vorgegangen und habe etliche sehr interressante Flächen erzeugt.
Aber keine war so symmetrisch und in sich geschlossen wie diese hier.

Nun zum technischen Teil. In der Povray-Dokumentation wird im Abschnitt "7.5.4.2 Poly, Cubic, Quartic" für die Angabe der Koeffizienten eine Art Matrixschreibweise vorgeschlagen. Da mir diese Schreibweise zu unübersichtlich war, habe ich in meinem Skript die Koeffizienten (a00-a34) untereinander geschrieben und in Komentarklammern (/* Komentar */) mit dem jeweils betroffenen Term dem Koeffizientenwert vorangestellt.


quartic {
  < 
/*a00 x^4  */   0,   
/*a01 x^3y */   0,  
/*a02 x^3z */   0,  
/*a03 x^3  */   0,  
/*a04 x^2y^2 */   T,   
/*a05 x^2yz*/   T,  
/*a06 x^2y */   T,  
/*a07 x^2z^2 */   T,  
/*a08 x^2z */   T,  
/*a09 x^2   */   T,  
/*a10 xy^3  */   0,
/*a11 xy^2z */   T,  
/*a12 xy^2 */   T,  
/*a13 xyz^2 */   T,  
/*a14 xyz  */   K,  
/*a15 xy   */   K,  
/*a16 xz^3  */   0,
/*a17 xz^2 */   T,  
/*a18 xz   */   K, 
/*a19 x    */   K,  
/*a20 y^4  */   0,
/*a21 y^3z  */   0,     
/*a22 y^3   */   0,  
/*a23 y^2z^2 */   T, 
/*a24 zy^2 */   T, 
/*a25 y^2   */   T,  
/*a26 yz  */   0,
/*a27 z^2y */   T,  
/*a28 yz^3   */   K,  
/*a29 y    */   K,  
/*a30 z^4  */   0,
/*a31 z^3   */   0,  
/*a32 z^2   */   T,  
/*a33 z    */   K, 
/*a34      */   0
>
etc.

Zum Beispiel gehört der Koeffizient a05 zum Term x^2yz und bestimmt wie groß dieser Term ist. Für die Kommentare ( /* Kommentar*/) interessiert sich POV-Ray natürlich nicht, sondern liest nur die eigentlichen Koeffizientenwerte.

Die Werte T und K sind vorher definierte Konstanten mit den Werten:
T = -0.028
K = 0.972
Alle anderen Terme haben den Koeffizient 0.
Noch ein Wort zum Erscheinungsbild der Lösungsfläche. Die Fläche erstreckt sich in den meissten Fällen natürlich unendlich weit in den dreidimensionalen Raum hinein. Um dies zu verhindern habe ich eine bounded_by Anweisung eingefügt welche die Fläche von einer Kugel mit einem festgelegten Radius abschneiden läßt.

Meine Fläche ist zwar endlich und in sich geschlossen und wird von der bounded_by-Kugel nicht zerschnitten, aber wenn man die Koeffizienten ändert, erhält man in der Regel unendliche Flächen.

Ein dreidimensionales Objekt betrachtet man natürlich am besten von allen Seiten, da ein einzelnes Bild nie genug Information vermitteln kann. Daher kann mit meinem POV-Ray-Skript auch eine Animation erstellt werden. Im Skript habe ich zwei Variablen (A und B) definiert, welche zwischen -1 und 1 schwingen und damit die Rotation des Objektes steuern, wenn eine Animation erstellt wird. Die Animation endet dort wo sie angefangen hat und läßt sich somit endlos spielen. Für die Dauer der Animation macht die Kamera eine komplette Rotation um das Objekt. Man kann auch die Variablen A und B als Quartic-Koeffizienten verwenden, und somit die Fläche an sich während der Animation verändern.

Eine Animation im Mpeg2-Format befindet sich hier (2MByte).

Wer jetzt neugierig geworden ist und die Figur gerne selbst rendern möchte, der kann sich das Skript hier herunterladen.

quartic-pov.tgz

In dem Paket befindet sich ein Verzeichnis quartic mit dem Unterverzeichnis output und den Dateien quartic.pov, quartic.ini, quartic.readme, povray.ini und quartic.sh, sowie im Verzeichnis output die Datei Quartic.par.

Die Datei quartic.readme enthält weiter Informationen zum Rendern des Bildes oder der Animation.

Die Datei quartic.sh ist ein kleines Shell-Script zum Erstellen des Bildes oder der Animation. Es ist für die Ungeduldigen gedacht, oder für die die sich mit POV-Ray nicht so gut auskennen.
Das Script rendert automatisch die Einzelbilder für die Animation und kann bei Bedarf auch die Animation im Mpeg-2-Format erzeugen. Voraussetzung dafür ist, dass die Programme tgatoppm und mpeg2encode auf dem System installiert sind.
tgatoppm sollte eigentlich in jeder Linux-Distribution enthalten sein.
mpeg2encode findet man notfalls auf www.mpeg.org.

Neues SuSE-Logo?

smr

Neues SuSE-Logo?

smr

Neues SuSE-Logo?

smr

Ach ja.
Die original Verpackungs-Bilder von SuSE wurden von Stephan Endraß mit dem Program SURF gemacht. Daher vielen Dank an ihn für die Inspiration. Wer noch mehr mathematische Flächen sehen will, der sollte sich unbedingt seine Homepage ansehen.

smr