POV-Ray: Bildung von Klassen

Oft tauchen in Bildbeschreibungen mehrmals gleiche Objekte auf. Eine Arbeitserleichterung ist es, wiederkehrende Objekte einmal zu definieren und anschließend mehrmals aufzurufen.

Hier noch einmal die fünf Siliziumatome, die eben schon als Beispiel gedient haben:

Ein Siliziumatom mit seinen 4 Nachbaratomen

Der Quelltext lautete:

#include "golds.inc"
#include "metals.inc"
#include "glass.inc"
#include "colors.inc"
#include "finish.inc"

camera {
location <5, 1, -5>
look_at <-9, 3, 14>
}

light_source {
<-20, 40, -20>
color White
}

sphere {
<1.5, 1.5, 1.5>
0.3
pigment {color Cyan}
finish {Shiny}
}

sphere {
<0, 0, 3>
0.3
pigment {color Cyan}
finish {Shiny}
}

sphere {
<3, 0, 0>
0.3
pigment {color Cyan}
finish {Shiny}
}

sphere {
<3, 3, 3>
0.3
pigment {color Cyan}
finish {Shiny}
}

sphere {
<0, 3, 0>
0.3
pigment {color Cyan}
finish {Shiny}
}

cylinder {
<1.5, 1.5, 1.5> <3, 0, 0>, 0.02
pigment {color Grey}
}
cylinder {
<1.5, 1.5, 1.5> <0, 3, 0>, 0.02
pigment {color Grey}
}
cylinder {
<1.5, 1.5, 1.5> <0, 0, 3>, 0.02
pigment {color Grey}
}
cylinder {
<1.5, 1.5, 1.5> <3, 3, 3>, 0.02
pigment {color Grey}
}

Einmal angenommen, wir wollten nicht nur einzelne Atome, sondern ein ganzes Siliziumgitter darstellen, könnten wir natürlich jedes Atom einzeln in unserem Beschreibungstext aufführen. Eine einfachere Möglichkeit wäre es, unsere fünf Atome zu einer sogenannten Klasse zusammenzufügen und dann immer die Klasse um einen bestimmten Betrag verschoben darstellen zu lassen. Die Syntax dafür sieht etwa so aus:

#declare grundstruktur = union {

Hier kommt alles hinein, was oben steht!

}

Aufgerufen wird diese Klasse mit dem von mir gewählten Namen "Grundstruktur" dann mit folgender Anweisung:

object {grundstruktur}

Möchte man diese Klasse nun vervielfältigen oder verschieben, ruft man immer nur diese Klasse mit den gewünschten Verschiebungsbeträgen auf.

object {grundstruktur}

object {grundstruktur translate <-3,0,3>}

object {grundstruktur translate <-3,3,0>}

object {grundstruktur translate <0,3,3>}

Diese Anweisungen würden folgendes Bild ergeben:

Ein Gitter mit mehreren Siliziumatomen

Mit Hilfe dieser Technik lassen sich in kurzer Zeit recht umfangreiche Strukturen erzeugen wie man im auf dem Sreenshot eines Videos, das ich erstellt habe, sehen kann:

Videoausschnitt in dem ein Gitter mit mehreren Siliziumatomen
zu sehen ist

Zur Übersicht Zum nächsten Kapitel