#include "metals.inc" #include "glass.inc" #local pos_turm = 8; #declare turm = lathe { 30, < 0.0, 0.0> < 1.6, 0.0> < 1.6, 0.6> < 1.4, 1.7> < 1.4, 2.0> < 1.6, 3.0> < 1.9, 3.0> < 1.9, 3.1> < 1.6, 3.1> < 1.1, 5.2> < 1.6, 5.2> < 1.6, 5.7> < 1.3, 6.3> < 1.1, 7.0> < 0.5, 7.0> < 0.5, 7.6> < 1.3, 7.6> < 1.3, 7.7> < 0.5, 7.7> < 0.5, 7.9> < 1.3, 7.9> < 1.3, 8.1> < 0.5, 8.1> < 0.5, 8.3> < 1.3, 8.3> < 1.3, 8.5> < 1.3, 8.9> < 1.6, 8.9> < 1.6, 9.5> < 0.0, 9.5> texture { pigment { image_map { png "turm-c.png" // XXX - rescale! map_type 2 } scale <1, 9.5, 1> } } normal { bump_map { png "turm-b.png" map_type 2 bump_size 5 } scale <1, 10.3, 1> } } #declare console = union { prism { linear_sweep linear_spline 0, 2.6, 5, <0, 0>, <4.4, 0>, <4.4, 0.6>, <0.6, 0.6>, <0, 0> rotate <0, -90, 0> rotate <0, 0, -90> texture { pigment {White} } } union { box { <0, 0, 0>, <1.4, 0.6*sqrt(2), -0.01> texture { pigment {Black} } } box { <0.4, 0.5, 0.01>, <1.3, 0.8, -0.02> texture { pigment {Green} } } sphere { <0.55, 0.35, 0.01>, 0.13 scale <1, 1, 0.1> texture { pigment {Green} } } sphere { <0.85, 0.35, 0.01>, 0.13 scale <1, 1, 0.1> texture { pigment {Yellow} } } sphere { <1.15, 0.35, 0.01>, 0.13 scale <1, 1, 0.1> texture { pigment {Red} } } rotate <45, 0, 0> } } #declare zylinder = union { lathe { 10, <0.0, 0.0>, <0.6, 0.0>, <0.6, 0.4>, <0.5, 0.5>, <0.5, 1.2>, <0.6, 1.4>, <0.6, 1.8>, <0.5, 1.8>, <0.4, 2.0>, <0.0, 2.0> } sphere { <0, 2, 0>, 0.4 } texture { T_Copper_3D } } #declare hufeisen = union { box { <0.0, 7.6, 0.0>, <0.5, 9.2, 1.5> } cone { <0.0, 8.4, 0.0>, 0.8, <0.5, 8.4, 0.0>, 0.8 } texture { T_Copper_3D } } #declare baum = union { cone { <0, 0, 0>, 0.3, <0, 2.7, 0>, 0.1 } sphere { <0, 2.7, 0>, 0.15 } #declare i=0; #while (i < 6) cone { <0, i * 0.25 + 0.5, 0>, 0.7 - 0.06 * i, <0, i * 0.25 + 0.7, 0>, 0.7 - 0.06 * i texture { T_Ruby_Glass } } #declare i = i + 1; #end cone { <0, 0, 0>, 0.5, <0, 0.4, 0>, 0.4 } texture { T_Chrome_5E } } #declare block = union { difference { prism { linear_sweep linear_spline 0, 8.9, 6, <0, 0>, <4.1, 0>, <4.1, 2.2>, <2.6, 3.6>, <0, 3.6>, <0, 0> } box { <0.2, 0.7, -0.1>, <3.8, 3.7, 1.4> } box { <0.5, 5.9, -0.1>, <2.0, 8.9, 2.6> } } object { console translate <0.5, 5.9, 0> } object { baum translate <1.25, 6.5, 1.5> } object { zylinder translate <0.8, 0.7, 0.7> } object { zylinder translate <2.0, 0.7, 0.7> } object { zylinder translate <3.2, 0.7, 0.7> } object { hufeisen translate <2.3, 0.0, 0.0> } object { hufeisen translate <3.0, 0.0, 0.0> } union { #declare zet = 3.1; #declare top = 8.9; cone { <2.5, top, zet>, 0.2 <2.5, (top+0.2), zet>, 0.2 } cone { <2.5, top, zet>, 0.1 <2.5, top, 1.5>, 0.1 } cone { <2.5, top, zet>, 0.1 <3.3, top, zet-1.2>, 0.1 } cone { <3.3, top, zet-1.2>, 0.1 <3.3, top, 1.5>, 0.1 } cone { <2.5, top, zet>, 0.1 <0.6, top, zet>, 0.1 } cone { <0.6, top, zet>, 0.4 <0.6, (top+0.2), zet>, 0.4 } sphere { <0.6, top, zet>, 0.3 } texture { pigment { Orange } } } union { cone { <2.9, 8.6, 0>, 0.1 <2.9, 4.6, 0>, 0.1 } cone { <2.9, 4.6, 0.0>, 0.2 <2.9, 4.6, -0.1>, 0.2 } cone { <2.9, 4.7, 0.0>, 0.1 <1.2, 4.7, 0.0>, 0.1 } cone { <2.9, 4.5, 0.0>, 0.1 <1.8, 4.5, 0.0>, 0.1 } cone { <1.8, 4.5, 0.0>, 0.1 <1.8, 3.7, 0.0>, 0.1 } texture { pigment { Orange } } } union { box { <0, 0.1, -0.2>, <1, 0.3, 0> } box { <0, -0.3, -0.2>, <1, -0.1, 0> } box { <0, -0.7, -0.2>, <1, -0.5, 0> } cone { <0.2, -0.7, -0.1>, 0.1, <0.2, 0.3, -0.1>, 0.1 } cone { <0.5, -0.7, -0.1>, 0.1, <0.5, 0.3, -0.1>, 0.1 } cone { <0.8, -0.7, -0.1>, 0.1, <0.8, 0.3, -0.1>, 0.1 } texture { pigment { LightSteelBlue } } translate <0.6, 4.7, 0> } texture { pigment { White } } } #declare block_paar = union { object { block translate <+0.45, 0, -pos_turm-1.5> } object { block translate <+0.45, 0, -pos_turm-1.5> scale <-1, 1, 1> } } #declare steg_turm = union { difference { cone { <0, 5.2, 0>, 1.6 + 0.8, <0, 5.4, 0>, 1.6 + 0.8 } cone { <0, 5.1, 0>, 1.6, <0, 5.5, 0>, 1.6 } } difference { torus { 1.6 + 0.8, 0.02 translate <0, 6.2, 0> } box { <-0.4, 6.1, +(1.6 + 0.7)> <+0.4, 6.3, +(1.6 + 0.9)> rotate <0, 135, 0> } box { <-0.4, 6.1, +(1.6 + 0.7)> <+0.4, 6.3, +(1.6 + 0.9)> rotate <0, 240, 0> } box { <-0.4, 6.1, +(1.6 + 0.7)> <+0.4, 6.3, +(1.6 + 0.9)> rotate <0, 30, 0> } } #declare i=0; #while (i < 360) #if (i != 30 & i != 240) cone { <0, 5.2, (1.6 + 0.8)>, 0.02, <0, 6.2, (1.6 + 0.8)>, 0.02 rotate <0, i, 0> } #end #declare i = i + 30; #end union { cone { <-0.4, 0, 0>, 0.02, <-0.4, 6.2, 0>, 0.02 } cone { <+0.4, 0, 0>, 0.02, <+0.4, 6.2, 0>, 0.02 } #declare i=0.3; #while (i < 5.2) box { <-0.4, i, 0.1>, <+0.4, i + 0.02, -0.1> } #declare i = i + 0.3; #end difference { torus { 0.5, 0.02 rotate <0, 0, 90> } plane { <0, 0, -1>, 0 } translate <-0.4, 5.7, 0> } difference { torus { 0.5, 0.02 rotate <0, 0, 90> } plane { <0, 0, -1>, 0 } translate <+0.4, 5.7, 0> } translate <0, 0, -(1.6 + 0.8)> rotate <0, -45, 0> } } #declare steg_verbindung = union { #local z1 = 0.4 * cos(radians(30)); box { <1.6 + 0.4, 5.2, -0.4>, <(1.5+0.8-z1)*2, 5.4, 0.4> } cone { <1.6 + 0.8, 5.2, -0.4>, 0.02 <1.6 + 0.8, 6.2, -0.4>, 0.02 } cone { <1.6 + 0.8, 6.2, -0.4>, 0.02 <(1.5+z1)*2, 6.2, -0.4>, 0.02 } cone { <(1.5+z1)*2, 5.2, -0.4>, 0.02 <(1.5+z1)*2, 6.2, -0.4>, 0.02 } cone { <1.6 + 0.8, 5.2, +0.4>, 0.02 <1.6 + 0.8, 6.2, +0.4>, 0.02 } cone { <1.6 + 0.8, 6.2, +0.4>, 0.02 <(1.5+0.8-z1)*2, 6.2, +0.4>, 0.02 } cone { <(1.5+0.8-z1)*2, 5.2, +0.4>, 0.02 <(1.5+0.8-z1)*2, 6.2, +0.4>, 0.02 } //plane { // <0, 0, -1>, 3.3 //} //rotate <0, 180 - 32.03, 0> rotate <0, 180 - 30.00, 0> translate } #declare steg_seite = union { #local x1 = pos_turm - (1.5+0.8-z1)*2*cos(radians(30)) + 0.4*sin(radians(30)); box { <-x1, 5.2, -2.3>, <+x1, 5.4, -1.5> } cone { <-x1, 6.2, -2.3>, 0.02, <+x1, 6.2, -2.3>, 0.02 } #declare i=-4; #while (i <= 4) cone { , 0.02, , 0.02 } #declare i = i + 2; #end object { steg_verbindung } object { steg_verbindung scale <-1, 1, 1> } } #declare steg1 = union { object { steg_turm translate } object { steg_seite translate <0, 0, 0> } /* texture { T_Chrome_5E } */ texture { pigment { Yellow } } } #declare steg = union { object { steg1 translate <0, 0, -pos_turm> } object { steg1 translate <0, 0, -pos_turm> rotate <0, 90, 0> } object { steg1 translate <0, 0, -pos_turm> rotate <0, 180, 0> } object { steg1 translate <0, 0, -pos_turm> rotate <0, 270, 0> } } #declare zentralturm = union { cone { <0, 0, 0>, 7.0 <0, 0.01, 0>, 7.0 texture { pigment { Yellow } } } cone { <0, 0, 0>, 3.2 <0, 0.3, 0>, 3.2 } cone { <0, 0.3, 0>, 2.8 <0, 2.5, 0>, 3.2 } cone { <0, 2.5, 0>, 2.5 <0, 3.6, 0>, 2.5 texture { pigment { image_map { gif "zentral1.gif" map_type 2 } scale <1, 1.1, 1> } } } intersection { sphere { <0, 5.5, 0>, 3.9 } box { <-3.9, 3.6, -3.9> <+3.9, 7.4, +3.9> } } union { difference { cone { <0, 7.4, 0>, 2.7 <0, 8.4, 0>, 2.3 } box { <0.2, 7.5, -0.2> <2.7, 8.3, -2.7> } box { <0.2, 7.5, +0.2> <2.7, 8.3, +2.7> } box { <-0.2, 7.5, +0.2> <-2.7, 8.3, +2.7> } box { <-0.2, 7.5, -0.2> <-2.7, 8.3, -2.7> } } cone { <0, 7.4, 0>, 2.1 <0, 8.4, 0>, 2.1 } } cone { <0, 8.4, 0>, 1.7 <0, 8.9, 0>, 1.4 texture { pigment { image_map { gif "zentral2.gif" map_type 2 } scale <1, 0.5, 1> translate <0, -0.1, 0> } } } cone { <0, 8.9, 0>, 0.7 <0, 9.0, 0>, 0.7 } sphere { <0, 9.0, 0>, 0.5 } texture { pigment { White } } } #declare klammer = union { difference { box { <6, 7.6, -0.5> <10, 8.9, +0.5> } cone { <0, 0, -1.1>, 1 <0, 0, +1.1>, 1 translate <7.3, 7.6, 0> } box { <5.9, 7.6, -1.1> <7.3, 8.5, +1.1> } } cone { < 6, 8.9, 0>, 0.1 <10, 8.9, 0>, 0.1 texture { pigment { Orange } } } cone { <7.3, 8.9, 0>, 0.3 <7.3, 9.1, 0>, 0.3 texture { pigment { Orange } } } box { < 6.0, 8.1, -1> <11, 8.3, +1> } intersection { torus { 5.2, 1.0 translate <0, 7.4, 0> } box { <4.2, 6.4, -1.0> <6.2, 7.4, +1.0> } } intersection { difference { cone { <0, 7.4, 0>, 6.2 <0, 8.3, 0>, 6.2 } cone { <0, 7.3, 0>, 6.0 <0, 8.4, 0>, 6.0 } } box { <4.7, 7.4, -1.0> <6.7, 8.3, +1.0> } } prism { linear_spline linear_sweep -0.8, 0.8, 8, <4.5, 8.1>, <5.5, 8.1>, <6.0, 8.3>, <7.5, 8.3>, <7.5, 8.5>, <6.0, 8.8>, <4.0, 8.8>, <4.5, 8.1> rotate <-90, 0, 0> texture { pigment { White } } } texture { pigment { White } } } #declare ring = union { torus { 5.2, 0.8 translate <0, 7.4, 0> texture { pigment { DarkSlateGray } } } object { klammer rotate <0, 45, 0> } object { klammer rotate <0, 135, 0> } object { klammer rotate <0, -45, 0> } object { klammer rotate <0, -135, 0> } } #declare transitionstriebwerk = union { object { turm translate <-pos_turm, 0, -pos_turm> } object { turm translate <-pos_turm, 0, +pos_turm> } object { turm translate <+pos_turm, 0, +pos_turm> } object { turm translate <+pos_turm, 0, -pos_turm> } object { block_paar } object { block_paar rotate <0, 90, 0> } object { block_paar rotate <0, 180, 0> } object { block_paar rotate <0, 270, 0> } object { steg } object { zentralturm } object { ring } cone { <0, 0, 0>, 15.0 <0, 0.005, 0>, 15.0 texture { pigment { Blue } } } }