CRYSTAL: Arbeitsweise


Das Programm liest kristallographische Daten etwa in der folgenden Form:
title Zeolith A
cell  12.30 12.30 12.30 90. 90. 90.
spgp P m -3 m  
polysz w 3.0 MediumBlue
polysz o 5.5 Scarlet 
edges 0.05 
atom si 2  0.0  0.182    0.3712
atom o  3  0.0  0.000    0.000
atom w  1  0.5  0.000    0.000 
end

und erzeugt (z.B. mit vrmlcrystal -p -.5 1.5 -.5 1.5 -.5 1.5 zeolith.str ) daraus entweder ein VRML-Script-File, das direkt mit einem Viewer wie z.B. vrweb betrachtet werden kann:
#VRML V1.0 ascii
# Scene file created by POVcrystal from zeolit_a.str */
# with command line options: -b 100.00 100.00 100.00 -o  0.50  0.50  0.50 */
#  -p -0.50  1.50 -0.50  1.50 -0.50  1.50 -v  0.00  0.00  0.00 */
Separator {
   Material {
  ambientColor    0.1 0.1 0.1
        diffuseColor    1 1 1
   specularColor   0.9 0.9 0.9
        shininess       0.8
    }

    PerspectiveCamera {
        position        2.646 -2.747 108.446
        orientation     0 0 1  0
        focalDistance   103.662
        heightAngle     0.285796
    }

Separator{
 Material{ 
 diffuseColor 0.1 0.1 0.1
 }
Coordinate3{ point[
-6.150000 -6.150000 -6.150000,

....

6.150000 -6.150000 6.150000]
}
IndexedLineSet{coordIndex[
 0,1,2,3,0,4,5,6,7,4,-1,5,3,-1,2,6,-1,7,1,-1]
}
}
# Polyhedron (24) around o  at 0.000000 0.000000 0.000000 
    Separator {
                Material {
            diffuseColor        1 0 0
}
Coordinate3 { point [
 -8.388600 -10.715759 -6.150000,

....................................usw..........................


oder in der Version für den Raytracer die entsprechende POV-Eingabe-Datei:
/* Scene file created by POVcrystal from zeolit_a.pov */
/* with command line options: -b 100.00 100.00 100.00 -o  0.50  0.50  0.50 */
/*  -p -0.50  1.50 -0.50  1.50 -0.50  1.50 -v  0.00  0.00  0.00 */
#include "colors.inc"
#default { finish
                { ambient 0.7
                 diffuse 0.3
                specular 0.03 roughness 0.01 }
        }
camera{
location< 0 ,0, -299.000006>
up <0, 0, 0.1>
right <0.1, 0, 0>
look_at <0,0,0>
}
background{color White}
light_source {< 0, 0, -4000.000000> color red 4.0 green 4.0 blue 4.0 }
object{ union{ 
cylinder{< -6.150000, -6.150000, -6.150000>, <-6.150000, -6.150000, 6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< -6.150000, -6.150000, 6.150000>, <-6.150000, 6.150000, 6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< -6.150000, 6.150000, 6.150000>, <-6.150000, 6.150000, -6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< -6.150000, 6.150000, -6.150000>, <-6.150000, -6.150000, -6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< -6.150000, -6.150000, -6.150000>, <6.150000, -6.150000, -6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< 6.150000, -6.150000, -6.150000>, <6.150000, 6.150000, -6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< 6.150000, 6.150000, -6.150000>, <6.150000, 6.150000, 6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< 6.150000, 6.150000, 6.150000>, <6.150000, -6.150000, 6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< 6.150000, -6.150000, 6.150000>, <6.150000, -6.150000, -6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< 6.150000, 6.150000, -6.150000>, <-6.150000, 6.150000, -6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< -6.150000, 6.150000, 6.150000>, <6.150000, 6.150000, 6.150000>, 0.020000 
texture{pigment{color Black }}}
cylinder{< 6.150000, -6.150000, 6.150000>, <-6.150000, -6.150000, 6.150000>, 0.020000 
texture{pigment{color Black }}}
/* Polyhedron (24) around o  at 0.000000 0.000000 0.000000 */
/* 6-sided polygon */
triangle {< -8.388600, -10.715759, -6.150000>,
<-6.150000, -10.715759, -8.388600>, <-6.150000, -8.388600, -10.715759>texture{pigment{color Scarlet 
}}}
..........usw.............

Mit dieser ergeben sich dann alle Möglichkeiten der weiteren Gestaltung, die der Raytracer POV zuläßt (siehe dazu das POV-Handbuch )