405 lines
6.6 KiB
POVRay
405 lines
6.6 KiB
POVRay
#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(<rr, 0, 0>, <0, aa, 0>);
|
|
#if (pp.x < 0 & pp.z < 0)
|
|
#local ss = 0;
|
|
#end
|
|
#end
|
|
#if (ss)
|
|
object {
|
|
treibstofftank
|
|
translate <rr, 10.2, 0>
|
|
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(<rr, 0, 0>, <0, aa, 0>);
|
|
#if (pp.x < 0 & pp.z < 0)
|
|
#local ss = 0;
|
|
#end
|
|
#end
|
|
#if (ss)
|
|
object {
|
|
turm
|
|
translate <rr, 10.2, 0>
|
|
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
|
|
}
|
|
|