// Nichtkommutativität geometrischer Transformationen // --------------------------------------------------------------- #version 3.5; // benötigte POV-Ray-Version background { color rgb <1, 1, 1> } // Hintergrundfarbe (weiß) box { <-1, -1,-1> <1,1,1> texture {finish {ambient 0.25 diffuse 0.8 phong 0.6} pigment { color rgb <0.1, 0.1, 0.1> } } } /* box { <-1, -1,-1> <1,1,1> texture {finish {ambient 0.25 diffuse 0.8 phong 0.6} pigment { color rgbf <0.5, 0.5, 0.5, 0.4> } } scale 2 rotate <0,0,45> translate <2,0,0> } */ box { <-1, -1,-1> <1,1,1> texture {finish {ambient 0.25 diffuse 0.8 phong 0.6} pigment { color rgbf <0.5, 0.5, 0.5, 0.4> } } translate <2,0,0> scale 2 rotate <0,0,45> } // Definition der Kamera und der Lichtquellen #declare intervall = 6 ; // Diese Variable legt den Bildausschnitt der gesamten Szene fest. #declare winkel = - 60 ; // Winkel der Kamera zur x-Achse (in Grad) // Auf die beiden Parameter "intervall" und "winkel" koennte verzichtet werden, dafuer muessten unten die entsprechenden // Werte 10 und -60 dann jeweils direkt eingesetzt werden. Allerdings kann man durch die zentrale Definiton dieser Werte // leicht den Bildausschnitt und den Blickwinkel veraendern. camera { orthographic location <60*intervall*cos(winkel*pi/180), 20*intervall, 60*intervall*sin(winkel*pi/180)> right x*4/3*2.3*intervall up y*2.3*intervall look_at <0.0, 0.0, 0.0> } light_source { <2.5*intervall, 2*intervall, -5*intervall> color rgb <1, 1, 1> } light_source { <0,10*intervall,2*intervall> color rgb <1, 1, 1> } // --------------------------------------------------------------------------- // Makro für die Darstellung eines Koordinatensystems mit Achsenbezeichnungen // --------------------------------------------------------------------------- #macro koordinatensystem ( achsenlaenge ) #declare kstextur = texture { pigment { rgbf<0.1,0.1,0.2,0.5> } finish { ambient 0.0 diffuse 0.1 reflection 0.05 brilliance 1 specular 0.3 roughness 0.2 } } ; #declare KSFont="cyrvetic.ttf" ; #declare KSSchriftgroesse=achsenlaenge/5 ; union{ // x-Achse: cylinder{-x*1.15*achsenlaenge , x*achsenlaenge, achsenlaenge/120} cone{ x*1.15*achsenlaenge, 0 , x*achsenlaenge, achsenlaenge/48} // y-Achse: cylinder{-y*1.15*achsenlaenge , y*achsenlaenge, achsenlaenge/120} cone{ y*1.15*achsenlaenge, 0 , y*achsenlaenge, achsenlaenge/48} // z-Achse: cylinder{-z*1.15*achsenlaenge , z*achsenlaenge, achsenlaenge/120} cone{ z*1.15*achsenlaenge, 0 , z*achsenlaenge, achsenlaenge/48} // Achsenbezeichnungen: text{ttf KSFont "x",0.1,0 scale KSSchriftgroesse translate <1.08*achsenlaenge,-achsenlaenge/7,0>} text{ttf KSFont "y",0.1,0 scale KSSchriftgroesse translate <-achsenlaenge/8,1.04*achsenlaenge,0>} text{ttf KSFont "z",0.1,0 scale KSSchriftgroesse translate } texture {kstextur} no_shadow } #end // --------------------------------------------------------------------------- // Vereinfachtes Koordinatensystem (ks) // --------------------------------------------------------------------------- #declare ks = koordinatensystem (intervall) // --------------------------------------------------------------------------- // Darstellung eines Koordinatenkreuzes mit Skaleneinteilung (Achsenintervalle: -10 - 10) // --------------------------------------------------------------------------- #declare Font1="cyrvetic.ttf"; #declare ks10 = union{ // X-Achse cylinder{-x*10.5,x*10.5,.05} cone{ x*11.5,0, x*10.5,.15} #declare Count=-10; #while (Count < 11) sphere {, .11} #declare Count=Count+1; #end // y-Achse cylinder{-y*10.5,y*10.5,.07} cone{ y*11.5,0, y*10.5,.15} #declare Count=-10; #while (Count < 11) sphere {<0,Count,0>, .11} #declare Count=Count+1; #end // z-Achse cylinder{-z*10.5,z*10.5,.07} cone{ z*11.5,0, z*10.5,.15} #declare Count=-10; #while (Count < 11) sphere {<0,0,Count>, .11} #declare Count=Count+1; #end // Achsenbeschriftungen text{ttf Font1 "x",0.1,0 scale <1.5,1.5,1.5> translate <10.9,-1.2,0>} text{ttf Font1 "y",0.1,0 scale <1.5,1.5,1.5> translate <-1,10.5,0>} text{ttf Font1 "z",0.1,0 scale <1.5,1.5,1.5> translate <-1,-0.2,11.5>} texture { pigment { rgb<0.1,0.1,0.5> } finish { ambient 0.1 diffuse 0.4 reflection 0.2 brilliance 1 specular 0.3 roughness 0.2 } } no_shadow } // --------------------------------------------------------------------------- // Darstellung eines Koordinatenkreuzes mit Skaleneinteilung (Achsenintervalle: -5 - 5) // --------------------------------------------------------------------------- #declare Font1="cyrvetic.ttf"; #declare ks5 = union{ // X-Achse cylinder{-x*5.5,x*5.5,.05} cone{ x*6.5,0, x*5.5,.15} #declare Count=-5; #while (Count < 6) sphere {, .11} #declare Count=Count+1; #end // y-Achse cylinder{-y*5.5,y*5.5,.07} cone{ y*6.5,0, y*5.5,.15} #declare Count=-5; #while (Count < 6) sphere {<0,Count,0>, .11} #declare Count=Count+1; #end // z-Achse cylinder{-z*5.5,z*5.5,.07} cone{ z*6.5,0, z*5.5,.15} #declare Count=-5; #while (Count < 6) sphere {<0,0,Count>, .11} #declare Count=Count+1; #end // Achsenbeschriftungen text{ttf Font1 "x",0.1,0 scale <1.5,1.5,1.5> translate <5.9,-1.2,0>} text{ttf Font1 "y",0.1,0 scale <1.5,1.5,1.5> translate <-1,5.7,0>} text{ttf Font1 "z",0.1,0 scale <1.5,1.5,1.5> translate <-1,-0.2,5.8>} texture { pigment { rgb<0.1,0.1,0.5> } finish { ambient 0.1 diffuse 0.4 reflection 0.2 brilliance 1 specular 0.3 roughness 0.2 } } no_shadow } ks5