#include "kraftwerk.pov" #include "treibstofftank.pov" #include "kabine.pov" #include "kabine4.pov" #include "T_bodenbelag.pov" #include "zentrale.pov" #declare Eps=1E-3; #local kabinen_deck = union { object { kabine1 translate <0, 0, 0> } object { kabine1 scale <-1, 1, +1> translate <0, 0, 0> } object { kabine1 translate <0, 0, 0> rotate <0, 90, 0> } object { kabine1 scale <-1, 1, +1> translate <0, 0, 0> rotate <0, 90, 0> } #ifndef (SCHNITT_1) object { kabine1 translate <0, 0, 0> rotate <0, 180, 0> } #end object { kabine1 scale <-1, 1, +1> translate <0, 0, 0> rotate <0, 180, 0> } object { kabine1 translate <0, 0, 0> rotate <0, 270, 0> } #ifndef (SCHNITT_1) object { kabine1 scale <-1, 1, +1> translate <0, 0, 0> rotate <0, 270, 0> } #end #local A0 = 0; #while (A0 < 360) #local I1 = 0; #while (I1 < 4) #local A = A0 + (-1.5 + I1) * Kw; #local ss = 1; #ifdef (SCHNITT_1) #local pp = vrotate(<0, 0, 1>, <0, A, 0>); #if (pp.x < 0 & pp.z < 0) #local ss = 0; #end #end #if (ss) object { kabine4 rotate <0, A, 0> } #end #local I1 = I1 + 1; #end #local A0 = A0 + 90; #end /* difference { intersection { cone { <0, 0, 0> 46.6 <0, -0.1, 0> 46.7 texture { T_bodenbelag } } torus { (15+6)/2, (15-6)/2 } } box { <-5.9, -0.1-Eps, -1> <-10, 0+Eps, +1> texture { T_bodenbelag } } box { <-5.9, -0.1-Eps, -1> <-10, 0+Eps, +1> texture { T_bodenbelag } rotate <0, 90, 0> } box { <-5.9, -0.1-Eps, -1> <-10, 0+Eps, +1> texture { T_bodenbelag } rotate <0, 180, 0> } box { <-5.9, -0.1-Eps, -1> <-10, 0+Eps, +1> texture { T_bodenbelag } rotate <0, 270, 0> } #ifdef (SCHNITT_1) intersection { torus { 23, 23 } plane { <0, 0, -1> 0 rotate <0, 45, 0> } plane { <0, 0, +1> 0 rotate <0, -45, 0> } rotate <0, 135, 0> translate <0, 10.0, 0> } #end } */ } #declare feldschirm_projektor = union { intersection { union { difference { sphere { <0, 0, 0>, 47.5 } sphere { <0, 0, 0>, 47 } } difference { sphere { <0, 0, 0>, 46.5 } sphere { <0, 0, 0>, 46 } } difference { sphere { <0, 0, 0>, 45.5 } sphere { <0, 0, 0>, 45 } } texture { pigment { rgb < 0.2, 0.2, 0.4 > } } } cone { <0,0,0>, 0 <-50, 0, 0>, 5 scale <1, 0.5, 1> rotate <0, 0, -17.5> texture { pigment { rgb < 0.2, 0.2, 0.2 > } } } } #local fsp_r1 = 0.5; #local fsp_r2 = 0.3; #local fsp_sa = 3; cone { <-43,0,0>, fsp_r2 <-47, 0, 0>, fsp_r1 rotate <0, 0, -fsp_sa> scale <1, 0.5, 1> rotate <0, 0, -17.5> texture { pigment { rgb < 1, 0.9, 1 > } } } cone { <-43,0,0>, fsp_r2 <-47, 0, 0>, fsp_r1 rotate <0, 0, -fsp_sa> rotate <120, 0, 0> scale <1, 0.5, 1> rotate <0, 0, -17.5> texture { pigment { rgb < 1, 0.9, 1 > } } } cone { <-43,0,0>, fsp_r2 <-47, 0, 0>, fsp_r1 rotate <0, 0, -fsp_sa> rotate <-120, 0, 0> scale <1, 0.5, 1> rotate <0, 0, -17.5> texture { pigment { rgb < 1, 0.9, 1 > } } } sphere { <-41.5, 15, 0>, 1 texture { T_Copper_3D } } cone { <-0, 4.8, 0>, 1 <-0, 0, 0>, 1.5 matrix < 1, 0, 0, 0.5/4.8, 1, 0, 0, 0, 1, 0, 0, 0 > translate <-42, 10.2, 0> texture { pigment { rgb < 1, 0.9, 1 > } } } cone { <-41.5, 12, -3>, 0.5 <-41.5, 12, +3>, 0.5 texture { pigment { rgb < 1, 0.8, 1 > } } } sphere { <-41.5, 12, -3>, 0.6 texture { T_Copper_3D } } sphere { <-41.5, 12, +3>, 0.6 texture { T_Copper_3D } } } #declare deck_13 = union { // Deck #if (1) intersection { union { difference { object { huelle } // Ausschnitte } } box { <-50, 15, -50> < 50, 10, 50> } } #end difference { // XXX cone { <0, 10.2, 0> 46.9 <0, 9.8, 0> 47.0 // texture { T_arkonstahl } texture { T_bodenbelag } } torus { (15+6)/2, (15-6)/2 translate <0, 10.0, 0> } #ifdef (SCHNITT_1) intersection { cone { <0, -0.3, 0> 47.1 <0, 0.3, 0> 47.1 } plane { <0, 0, -1> 0 rotate <0, 45, 0> } plane { <0, 0, +1> 0 rotate <0, -45, 0> } rotate <0, 135, 0> translate <0, 10.0, 0> texture { pigment { rgb < 1, 0, 0 > } } } #end } // Zentrale object { zentrale translate <0, 10.2, 0> } // Kabinen object { kabinen_deck translate <0, 14.8-2.84, 0> } object { kabinen_deck translate <0, 14.8-2*2.84, 0> } // Stiegenhaeuser #local J = 0; #while (J < 360) union { #local I= 0; #while (I < 10) box { <-10+(I+1)*0.4, 14.8-2.84 - I*0.196, 0> <-10+I*0.4, 14.8-2.84 - I*0.196 - 0.1, +1> texture { T_bodenbelag } } #local I = I + 1; #end #local I= 0; #while (I < 6) box { <-10+(I+1)*0.4, 14.8-2*2.84 + I*0.18, 0> <-10+I*0.4, 14.8-2*2.84 + I*0.18 - 0.1, -1> texture { T_bodenbelag } } #local I = I + 1; #end box { <-6, 10.2, 0> <-7.6, 10.2 - 0.1, -1> texture { T_bodenbelag } } rotate <0, J, 0> } #local J = J + 90; #end // Treibstofftanks #local rr = 25.5; #while (rr < 40.0) #local da = degrees(asin(0.5/rr))*2; #local da = 360 / int(360 / da); #local aa = 0; #while (aa <= 360 - da) #local ss = 1; #ifdef (SCHNITT_1) #local pp = vrotate(, <0, aa, 0>); #if (pp.x < 0 & pp.z < 0) #local ss = 0; #end #end #if (ss) object { treibstofftank translate rotate <0, aa, 0> } #end #local aa = aa + da; #end #local rr = rr + 1.0; #end // Kraftwerke #local rr = 20; #local da = degrees(asin(5/rr))*2; #debug concat ("\nDa(1): ", str(da, 0, 0)) #local da = 360 / int(360 / da); #debug concat ("\nDa(2): ", str(da, 0, 0)) #local aa = 0; #while (aa <= 360 - da) #local ss = 1; #ifdef (SCHNITT_1) #local pp = vrotate(, <0, aa, 0>); #if (pp.x < 0 & pp.z < 0) #local ss = 0; #end #end #if (ss) object { turm translate rotate <0, aa, 0> } #end #local aa = aa + da; #end #local a = 0; #while (a < 360) #if (!SCHNITT_1 | a <= 270) object { feldschirm_projektor rotate <0, a, 0> } #end #local a = a + 20; #end }