diff --git a/pr/schneller_kreuzer/ringwulst.pov b/pr/schneller_kreuzer/ringwulst.pov index d5a4a28..a6ff332 100644 --- a/pr/schneller_kreuzer/ringwulst.pov +++ b/pr/schneller_kreuzer/ringwulst.pov @@ -1,60 +1,101 @@ #local Eps = 1E-6; +#include "triebwerk.pov" #declare ringwulst = - difference { + union { difference { - union { + difference { + union { + cylinder { + <0, -10, 0> + <0, 10, 0> + 50 + } + torus { + 50, 15 + scale <1, 10/15, 1> + } + } cylinder { - <0, -10, 0> - <0, 10, 0> - 50 - } - torus { - 50, 15 - scale <1, 10/15, 1> + <0, -10 - Eps, 0> + <0, 10 + Eps, 0> + 15 } } - cylinder { - <0, -10 - Eps, 0> - <0, 10 + Eps, 0> - 15 - } - } - difference { - union { + difference { + union { + cylinder { + <0, -8, 0> + <0, 8, 0> + 50 + } + torus { + 50, 13 + scale <1, 8/13, 1> + } + } cylinder { - <0, -8, 0> - <0, 8, 0> - 50 - } - torus { - 50, 13 - scale <1, 8/13, 1> + <0, -8 - Eps, 0> + <0, 8 + Eps, 0> + 17 } } - cylinder { - <0, -8 - Eps, 0> - <0, 8 + Eps, 0> - 17 + box { + <-100, -100, -100> + < 0, 100, 0> } - } - box { - <-100, -100, -100> - < 0, 100, 0> - } + #local i = 0; + #while (i < 18) + #local aa = i * 360 / 18; + #local ss = 1; + #ifdef (SCHNITT_1) + #local pp = vrotate(<0, 0, 1>, <0, aa, 0>); + #if (pp.x < 0 & pp.z < 0) + #local ss = 0; + #end + #end + #if (ss) + object { + triebwerk_neg + rotate <0, aa, 0> + } + #end - #if (0) - texture { - crackle - texture_map { - [ 0.0 T_arkonstahl ] - [ 0.2 T_arkonstahl ] - [ 0.2 T_luft ] - [ 1.0 T_luft ] + #local i = i + 1; + #end + + #if (0) + texture { + crackle + texture_map { + [ 0.0 T_arkonstahl ] + [ 0.2 T_arkonstahl ] + [ 0.2 T_luft ] + [ 1.0 T_luft ] + } } + #else + texture { T_arkonstahl } + #end } - #else - texture { T_arkonstahl } + #local i = 0; + #while (i < 18) + #local aa = i * 360 / 18; + #local ss = 1; + #ifdef (SCHNITT_1) + #local pp = vrotate(<0, 0, 1>, <0, aa, 0>); + #if (pp.x < 0 & pp.z < 0) + #local ss = 0; + #end + #end + #if (ss) + object { + triebwerk + rotate <0, aa, 0> + } + #end + + #local i = i + 1; #end } diff --git a/pr/schneller_kreuzer/triebwerk.pov b/pr/schneller_kreuzer/triebwerk.pov new file mode 100644 index 0000000..ea055b1 --- /dev/null +++ b/pr/schneller_kreuzer/triebwerk.pov @@ -0,0 +1,264 @@ +#include "T_arkonstahl.pov" +#include "glass.inc" +#include "rounded_box.pov" + +#local Eps = 1E-6; + +#local l_a_r = + union { + cylinder { + <0, 5.0, 0>, <2.8, 5.0, 0>, 0.1 + } + sphere { + <2.8, 5.0, 0>, 0.1 + } + cylinder { + <2.8, 5.0, 0>, <2.8, -5.0, 0>, 0.1 + } + sphere { + <2.8, -5.0, 0>, 0.1 + } + } + +#local l_1_r = + union { + object { + l_a_r + translate <0, 0, 20> + } + cylinder { + <2.8, -5.0, 20.0>, <2.8, -5.0, 21.0>, 0.1 + } + sphere { + <2.8, -5.0, 21.0>, 0.1 + } + cylinder { + <2.8, -5.0, 21.0>, <2.5, -5.0, 21.0>, 0.1 + } + pigment { + rgb <1, 0.5, 0> + } + } + +#local l_2_r = + union { + object { + l_a_r + translate <0, 0, 27.5> + } + cylinder { + <2.8, -5.0, 27.5>, <2.5, -5.0, 27.5>, 0.1 + } + pigment { + rgb <1, 0.5, 0> + } + } + +#local l_3_r = + union { + object { + l_a_r + translate <0, 0, 35> + } + cylinder { + <2.8, -5.0, 35.0>, <2.8, -5.0, 31.0>, 0.1 + } + sphere { + <2.8, -5.0, 31.0>, 0.1 + } + cylinder { + <2.8, -5.0, 31.0>, <2.5, -5.0, 31.0>, 0.1 + } + pigment { + rgb <1, 0.5, 0> + } + } + +#declare triebwerk = + union { + union { + sphere { + <0, 0, 0>, 1 + scale 2.5 + } + cone { + <0, 0, 0>, 0 + <0, 3, 0>, 1.0 + } + + translate <0, 5.0, 20> + pigment { + rgb <1, 0.5, 0> + } + } + object { + l_1_r + } + object { + l_1_r + scale <-1, 1, 1> + } + union { + sphere { + <0, 0, 0>, 1 + scale 2.5 + } + cone { + <0, 0, 0>, 0 + <0, 3, 0>, 1.0 + } + translate <0, 5.0, 27.5> + pigment { + rgb <1, 0.5, 0> + } + } + object { + l_2_r + pigment { + rgb <1, 0, 0> + } + } + object { + l_2_r + scale <-1, 1, 1> + } + union { + sphere { + <0, 0, 0>, 1 + scale 2.5 + } + cone { + <0, 0, 0>, 0 + <0, 3, 0>, 1.0 + } + translate <0, 5.0, 35> + pigment { + rgb <1, 0.5, 0> + } + } + object { + l_3_r + } + object { + l_3_r + scale <-1, 1, 1> + } + union { + cylinder { + <1, 0, 22>, <1, -2.5, 22>, 1 + } + cylinder { + <-1, 0, 22>, <-1, -2.5, 22>, 1 + } + cylinder { + <0, 0, 21> <0, 0, 32> 1.0 + } + #local z0 = 22; + #while (z0 <= 32) + sphere { + <0, 0, 0>, 1 + scale 0.2 + translate <0, 1.1, z0> + rotate <0, 0, z0 * 180> + pigment { + rgb <0, 0, 0.2> + } + } + sphere { + <0, 0, 0>, 1 + scale 0.2 + translate <0, -1.1, z0> + rotate <0, 0, z0 * 180> + pigment { + rgb <0, 0, 0.2> + } + } + #local z0 = z0 + 0.05; + #end + torus { + 1,1 + scale 1.0 + rotate <90, 0, 0> + translate <0, 0, 22.0> + } + cone { + <0, 0, 32> 1.0 + <0, 0, 40> 3.0 + } + cone { + <0, 0, 40> 3.0 + <0, 0, 49> 3.0 + } + cone { + <0, 0, 49> 3.0 + <0, 0, 50> 2.0 + } + cone { + <0, 0, 50> 2.0 + <0, 0, 56> 2.0 + } + sphere { + <0, 0, 56>, 3.0 + } + intersection { + union { + difference { + cone { + <0, 0, 56> 0.5 + <0, 10, 57.5> 3.0 + } + cone { + <0, 0, 56> 0.1 + <0, 10 + Eps, 57.5 + Eps> 2.5 + } + } + difference { + cone { + <0, 0, 56> 0.5 + <0, -10, 57.5> 3.0 + } + cone { + <0, 0, 56> 0.1 + <0, -10 + Eps, 57.5 + Eps> 2.5 + } + } + } + torus { + 50, 15 + scale <1, 10/15, 1> + } + } + prism { + -1, 1, + 5, + <3.5, -8> <-3.5, -8>, <-3, -1>, <3, -1>, <3.5, -8> + rotate <-90, 0, 0> + translate <0, 0, 41> + } + prism { + -1, 1, + 5, + <3.5, -8> <-3.5, -8>, <-2.5, -1>, <2.5, -1>, <3.5, -8> + rotate <-90, 0, 0> + translate <0, 0, 53> + } + texture { T_arkonstahl } + } + object { + rounded_box(<-2.5, -8, 20>, <2.5, -2.5, 32>, 0.5) + texture { T_Ruby_Glass } + interior { I_Glass } + } + } + +#declare triebwerk_neg = + union { + cone { + <0, 0, 56> 0.5 + <0, 10, 57.5> 3.0 + } + cone { + <0, 0, 56> 0.5 + <0, -10, 57.5> 3.0 + } + }