1196 lines
24 KiB
Plaintext
1196 lines
24 KiB
Plaintext
|
|
// Persistence of Vision Ray Tracer Include File
|
|
// POV-Ray 3.0
|
|
// File: KR200.inc
|
|
// Vers: 1.1
|
|
// Desc: Kugelraumer 200m Durchmesser
|
|
// Schwerer Kreuzer der TERRA-Klasse
|
|
// Date: 20.01.97
|
|
// Auth: Harald Ottacher
|
|
// email: ottacher@iwf.tu-graz.ac.at
|
|
//
|
|
////////////////////////////////////////////////////
|
|
|
|
#declare _MAT_gif = "KRPL200.GIF"
|
|
#declare _M_ANGL = 0.0;
|
|
|
|
#declare _FENSTER_R = 100;
|
|
|
|
//#declare _STUETZE = 1; // wenn deklariert dann sind
|
|
// die Landstützen ausgefahren
|
|
//#declare _NO_F_LIGHT = 1; // wenn deklariert dann sind
|
|
// die Fenster dunkel
|
|
//#declare _NO_K_LIGHT = 1; // wenn deklariert dann sind
|
|
// Beobachtungskuppel dunkel
|
|
|
|
#include "KRMAT.INC"
|
|
|
|
////////////////////////////////////////////////////
|
|
|
|
// Kugelraumer 200 Meter
|
|
#declare R = 100.0; // Kugelradius
|
|
#declare wr = 15.0; // Wulstradius
|
|
|
|
// Fenster
|
|
#declare F_O1 =
|
|
union {
|
|
superellipsoid { < 0.5, 0.5 >
|
|
scale < R+5, 0.8, 0.65 >
|
|
translate < 0, 0, -1.35 >
|
|
}
|
|
superellipsoid { < 0.5, 0.5 >
|
|
scale < R+5, 0.8, 0.65 >
|
|
translate < 0, 0, 1.35 >
|
|
}
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare Count = 0;
|
|
#declare F_OR =
|
|
union {
|
|
// OBEN 1
|
|
#while (Count < 180)
|
|
union {
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count-2.5, 0 >
|
|
}
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count+2.5, 0 >
|
|
}
|
|
translate < 0, 70, 0 > // oben 1
|
|
}
|
|
#declare Count=Count+20; //18
|
|
#end
|
|
// OBEN 2
|
|
#declare Count = 0;
|
|
#while (Count < 180)
|
|
union {
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count-2.1, 0 >
|
|
}
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count+2.1, 0 >
|
|
}
|
|
translate < 0, 52, 0 > // oben 2
|
|
}
|
|
#declare Count=Count+18; //15
|
|
#end
|
|
// OBEN 3
|
|
#declare Count = 36;
|
|
#while (Count < 325)
|
|
union {
|
|
object {
|
|
F_O1
|
|
scale < 0.5, 1, 1 >
|
|
translate < -R, 0, 0 >
|
|
rotate < 0, Count-2.1, 0 >
|
|
}
|
|
object {
|
|
F_O1
|
|
scale < 0.5, 1, 1 >
|
|
translate < -R, 0, 0 >
|
|
rotate < 0, Count+2.1, 0 >
|
|
}
|
|
translate < 0, 35, 0 > //oben 3
|
|
}
|
|
#declare Count=Count+12;
|
|
#end
|
|
|
|
// UNTEN 1
|
|
#declare Count = 0;
|
|
#while (Count < 180)
|
|
union {
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count-2.1, 0 >
|
|
}
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count+2.1, 0 >
|
|
}
|
|
translate < 0, -54, 0 > // unten 1
|
|
}
|
|
#declare Count=Count+18; //15
|
|
#end
|
|
|
|
// UNTEN 2
|
|
#declare Count = 0;
|
|
#while (Count < 180)
|
|
union {
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count-2.5, 0 >
|
|
}
|
|
object {
|
|
F_O1
|
|
rotate < 0, Count+2.5, 0 >
|
|
}
|
|
translate < 0, -72, 0 > // unten 2
|
|
}
|
|
#declare Count=Count+20; //18
|
|
#end
|
|
} // end union
|
|
|
|
#declare FENSTER =
|
|
difference {
|
|
object { F_OR }
|
|
sphere { <0, 0, 0>, R-0.3
|
|
hollow
|
|
texture {
|
|
_T_FENSTER
|
|
//pigment { Yellow }
|
|
}
|
|
}
|
|
} // end difference
|
|
|
|
//----- Hangar Textur
|
|
#declare Mannschl =
|
|
texture {
|
|
pigment {
|
|
image_map {
|
|
gif "MANNS.GIF"
|
|
interpolate 4 // 4=normalized distance
|
|
filter 5 1.0
|
|
once
|
|
}
|
|
translate < -0.5, -0.5, 0 >
|
|
scale < 5, 2.5 , 1 >
|
|
rotate < 0, 90, 0 >
|
|
} // end pigment
|
|
} // end texture
|
|
|
|
#declare Hangar_B =
|
|
texture {
|
|
pigment {
|
|
image_map {
|
|
gif "HB200.GIF"
|
|
interpolate 4 // 4=normalized distance
|
|
filter 5 1.0
|
|
once
|
|
}
|
|
translate < -0.5, -0.5, 0 >
|
|
scale < 16, 9 , 1 >
|
|
rotate < 0, 90 ,0 >
|
|
} // end pigment
|
|
} // end texture
|
|
|
|
#declare Hangar_KRO =
|
|
texture {
|
|
pigment {
|
|
image_map {
|
|
gif "HGRO200.GIF"
|
|
interpolate 4 // 4=normalized distance
|
|
filter 5 1.0
|
|
once
|
|
}
|
|
translate < -0.5, -0.5, 0 >
|
|
scale < 18, 9 , 1 >
|
|
rotate < 0, 90 ,0 >
|
|
} // end pigment
|
|
} // end texture
|
|
|
|
#declare Hangar_KRU =
|
|
texture {
|
|
pigment {
|
|
image_map {
|
|
gif "HGRU200.GIF"
|
|
interpolate 4 // 4=normalized distance
|
|
filter 5 1.0
|
|
once
|
|
}
|
|
translate < -0.5, -0.5, 0 >
|
|
scale < 16, 8 , 1 >
|
|
rotate < 0, 90 ,0 >
|
|
} // end pigment
|
|
} // end texture
|
|
|
|
#declare Hangar_SJ =
|
|
texture {
|
|
pigment {
|
|
image_map {
|
|
png "HGSJ200.png"
|
|
interpolate 4 // 4=normalized distance
|
|
once
|
|
}
|
|
translate < -0.5, -0.5, 0 >
|
|
scale < 35, 26, 1 >
|
|
rotate < 0, 90 ,0 >
|
|
} // end pigment
|
|
} // end texture
|
|
|
|
//----- Hangar Tore
|
|
#declare norm_msl_h = 16.25; // Höhe Mannschl normal
|
|
#declare zus_msl_h = 45; // Höhe Mannschl zusätzlich
|
|
#declare sjh_h = 28; // Höhe SJ-Hangar
|
|
#declare hgkr_ob = 60; // Höhe Hangarkreis oben
|
|
#declare hgkr_ut = -35; // Höhe Hangarkreis unten
|
|
#declare hgb_h = -85; // Höhe Bodenhangar
|
|
|
|
#declare Count = 45;
|
|
#declare MANNSCHL =
|
|
union {
|
|
#while (Count < 360)
|
|
intersection {
|
|
sphere { <0, 0, 0>, R-0.5 }
|
|
box { <-1, -1, -1>, < -0.2, 1, 1>
|
|
scale < R+5, 1.25, 2.5 >
|
|
translate < 0, norm_msl_h, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
texture {
|
|
Mannschl
|
|
translate < 0, norm_msl_h, 0 >
|
|
}
|
|
rotate < 0, Count ,0 >
|
|
} // end intersection
|
|
#declare Count=Count+45;
|
|
#end
|
|
intersection {
|
|
sphere { <0, 0, 0>, R-0.5 }
|
|
box { <-1, -1, -1>, < -0.2, 1, 1>
|
|
scale < R+5, 1.25, 2.5 >
|
|
translate < 0, zus_msl_h, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
texture {
|
|
Mannschl
|
|
translate < 0, zus_msl_h, 0 >
|
|
} // end texture
|
|
} // end intersection
|
|
} // end Union
|
|
|
|
#declare Count = 0;
|
|
#declare HANGAR_B =
|
|
union {
|
|
#while (Count < 360)
|
|
intersection {
|
|
sphere { <0, 0, 0>, R-1.0 }
|
|
box { <-1, -1, -1>, < -0.2, 1, 1>
|
|
scale < R+5, 5, 13 >
|
|
translate < 0, hgb_h, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
texture {
|
|
Hangar_B
|
|
translate < 0, hgb_h, 0 >
|
|
} // end texture
|
|
rotate < 0, Count ,0 >
|
|
} // end intersection
|
|
#declare Count=Count+180;
|
|
#end
|
|
} // end union
|
|
|
|
#declare Count = 0;
|
|
#declare HANGARKR_OB =
|
|
union {
|
|
#while (Count < 360)
|
|
intersection {
|
|
sphere { <0, 0, 0>, R-1.0 }
|
|
box { <-1, -1, -1>, < -0.2, 1, 1>
|
|
scale < R+5, 5, 20 >
|
|
translate < 0, hgkr_ob, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
texture {
|
|
Hangar_KRO
|
|
translate < 0, hgkr_ob, 0 >
|
|
} // end texture
|
|
rotate < 0, Count ,0 >
|
|
} // end intersection
|
|
#declare Count=Count+60;
|
|
#end
|
|
} // end union
|
|
|
|
#declare Count = 0;
|
|
#declare HANGARKR_UT =
|
|
union {
|
|
#while (Count < 360)
|
|
intersection {
|
|
sphere { <0, 0, 0>, R-1.0 }
|
|
box { <-1, -1, -1>, < -0.2, 1, 1>
|
|
scale < R+5, 5, 15 >
|
|
translate < 0, hgkr_ut, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
texture {
|
|
Hangar_KRU
|
|
translate < 0, hgkr_ut, 0 >
|
|
} // end texture
|
|
rotate < 0, Count ,0 >
|
|
} // end intersection
|
|
#declare Count=Count+45;
|
|
#end
|
|
} // end union
|
|
|
|
#declare HANGAR_SJ =
|
|
intersection {
|
|
sphere { <0, 0, 0>, R-1.0 }
|
|
box { <-1, -1, -1>, < 0, 1, 1>
|
|
scale < R+5, 15, 20 >
|
|
translate < 0, sjh_h, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
texture {
|
|
Hangar_SJ
|
|
translate < 0, sjh_h, 0 >
|
|
} // end texture
|
|
} // end intersection
|
|
|
|
//----- Hangar Ausschnitte
|
|
#declare Count = 45;
|
|
#declare _MANNSCHL =
|
|
union {
|
|
#while (Count < 360)
|
|
superellipsoid { < 0.2, 0.2 >
|
|
scale < R/2+5, 1.25, 2.5 >
|
|
translate < -R/2, 0, 0 >
|
|
rotate < 0, Count ,0 >
|
|
translate < 0, norm_msl_h, 0 >
|
|
}
|
|
#declare Count=Count+45;
|
|
#end
|
|
superellipsoid { < 0.2, 0.2 >
|
|
scale < R/2+5, 1.25, 2.5 >
|
|
translate < -R/2, 0, 0 >
|
|
translate < 0, zus_msl_h, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
} // end union
|
|
|
|
// Hangar Boden
|
|
#declare _HANGAR_B =
|
|
object {
|
|
superellipsoid { < 0.2, 0.2 >
|
|
scale < R, 4.5, 12 >
|
|
translate < 0, hgb_h, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
} // end object
|
|
|
|
// oberer Hangarkreis
|
|
#declare Count = 0;
|
|
#declare _HANGARKR_OB =
|
|
union {
|
|
#while (Count < 180)
|
|
superellipsoid { < 0.2, 0.2 >
|
|
scale < R, 4.5, 18 >
|
|
rotate < 0, Count ,0 >
|
|
translate < 0, hgkr_ob, 0 >
|
|
}
|
|
#declare Count=Count+60;
|
|
#end
|
|
texture { TERKONIT }
|
|
} // end union
|
|
|
|
// unterer Hangarkreis
|
|
#declare Count = 0;
|
|
#declare _HANGARKR_UT =
|
|
union {
|
|
#while (Count < 180)
|
|
superellipsoid { < 0.2, 0.2 >
|
|
scale < R, 4, 13 >
|
|
rotate < 0, Count ,0 >
|
|
translate < 0, hgkr_ut, 0 >
|
|
}
|
|
#declare Count=Count+45;
|
|
#end
|
|
texture { TERKONIT }
|
|
} // end union
|
|
|
|
// SJ Hangar
|
|
#declare _HANGAR_SJ =
|
|
superellipsoid { < 0.2, 0.2 >
|
|
scale < 50, 13, 19 >
|
|
translate < -60, 0, 0 >
|
|
translate < 0, sjh_h, 0 >
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare SCHALE =
|
|
object {
|
|
difference {
|
|
sphere { <0, 0, 0> R
|
|
}
|
|
object { _MANNSCHL } // Mann Schleuse
|
|
object { _HANGARKR_OB } // Hangarkreis oben
|
|
object { _HANGAR_SJ } // Hangar für Space Jet
|
|
object { _HANGARKR_UT } // Hangarkreis unten
|
|
object { _HANGAR_B } // Hangar Boden
|
|
object { FENSTER }
|
|
}
|
|
} // end object
|
|
|
|
//---------------------------------------------------
|
|
// Ringwulst
|
|
|
|
#declare DUESE =
|
|
object {
|
|
union {
|
|
quadric {
|
|
<1, 0, 1>,
|
|
<0, 0, 0>,
|
|
<0, -1, 0>, 0
|
|
}
|
|
cylinder {
|
|
< 0, 0.3, 0 >,
|
|
< 0, -0.2, 0 >,
|
|
0.3
|
|
}
|
|
}
|
|
scale 2.5
|
|
texture { TERKONIT
|
|
finish {
|
|
ambient 0.05
|
|
diffuse 0.7
|
|
reflection 0.5
|
|
}
|
|
}
|
|
} // end obj
|
|
|
|
#declare r1 = 7.25; // Düsenentfernung
|
|
#declare dsk = 45; // Düsenwinkel
|
|
|
|
#declare WULST =
|
|
object {
|
|
difference {
|
|
union {
|
|
torus { R, wr }
|
|
cylinder { -wr*y , wr*y, R }
|
|
}
|
|
#declare Count = 10;
|
|
#while (Count < 360)
|
|
#declare X=(r1*cos(radians( dsk ))+R)*sin(radians( Count ));
|
|
#declare Z=(r1*cos(radians( dsk ))+R)*cos(radians( Count ));
|
|
#declare Y=r1*sin(radians( dsk ));
|
|
object {
|
|
DUESE
|
|
rotate < dsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z, >
|
|
}
|
|
#declare Count=Count+20;
|
|
#end
|
|
#declare Count = 10;
|
|
#while (Count < 360)
|
|
#declare X=(r1*cos(radians( -dsk ))+R)*sin(radians( Count ));
|
|
#declare Z=(r1*cos(radians( -dsk ))+R)*cos(radians( Count ));
|
|
#declare Y=r1*sin(radians( -dsk ));
|
|
object {
|
|
DUESE
|
|
rotate <180-dsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z, >
|
|
}
|
|
#declare Count=Count+20;
|
|
#end
|
|
}
|
|
} // end object
|
|
|
|
//---------------------------------------------------
|
|
// Geschützkuppeln
|
|
|
|
#declare GSROHR =
|
|
lathe {
|
|
linear_spline
|
|
16,
|
|
<0, 0>,
|
|
<0.1, 0>,
|
|
<0.10, 1.03>, <0.15, 1.03>, <0.15, 1.05>, <0.10, 1.05>,
|
|
<0.10, 1.07>, <0.15, 1.07>, <0.15, 1.09>, <0.10, 1.09>,
|
|
<0.10, 1.11>, <0.15, 1.11>, <0.11, 1.25>, <0.08, 1.25>, <0.08, 1.0>,
|
|
<0, 1.0>
|
|
|
|
texture { TERKONIT
|
|
}
|
|
} // end lathe
|
|
|
|
#declare POLGSROHR =
|
|
union {
|
|
object { GSROHR }
|
|
cylinder {
|
|
< 0.1, 0, 0 >
|
|
< 0.1, 1.0, 0 >, 0.05
|
|
}
|
|
cylinder {
|
|
< -0.1, 0, 0 >
|
|
< -0.1, 1.0, 0 >, 0.05
|
|
}
|
|
cylinder {
|
|
< 0, 0, 0.1 >
|
|
< 0, 1.0, 0.1 >, 0.05
|
|
}
|
|
cylinder {
|
|
< 0, 0, -0.1 >
|
|
< 0, 1.0, -0.1 >, 0.05
|
|
}
|
|
texture { TERKONIT }
|
|
scale 0.8
|
|
} // end union
|
|
|
|
#declare GSKUPPEL_1 =
|
|
object {
|
|
union {
|
|
sphere {
|
|
< 0, 0, 0 >, 1
|
|
texture { TERKONIT }
|
|
scale < 1, 0.75, 1 >
|
|
}
|
|
object { GSROHR
|
|
scale 0.85
|
|
}
|
|
}
|
|
scale 4
|
|
} // end obj
|
|
|
|
#declare GSKUPPEL_2 =
|
|
object {
|
|
union {
|
|
sphere {
|
|
< 0, 0, 0 >, 1
|
|
texture { TERKONIT }
|
|
scale < 1, 0.75, 1 >
|
|
}
|
|
object { GSROHR
|
|
scale 0.85
|
|
}
|
|
}
|
|
scale 5
|
|
} // end obj
|
|
|
|
#declare GSKUPPEL_3 =
|
|
object {
|
|
union {
|
|
sphere {
|
|
< 0, 0, 0 >, 1
|
|
texture { TERKONIT }
|
|
scale < 1, 0.70, 1 >
|
|
}
|
|
object { POLGSROHR
|
|
scale 1.0
|
|
}
|
|
}
|
|
scale 5
|
|
} // end obj
|
|
|
|
#declare rgs = R - 1.5; // Radius Polgeschütz
|
|
#declare GSKP =
|
|
union {
|
|
sphere { < 0, 0, 0 >, 1
|
|
texture { TERKONIT }
|
|
scale <1, 0.5, 1>
|
|
}
|
|
union {
|
|
object {
|
|
POLGSROHR
|
|
translate < 0.2, 0, 0 >
|
|
}
|
|
object {
|
|
POLGSROHR
|
|
translate < -0.2, 0, 0 >
|
|
}
|
|
rotate < -40, 0, 0 >
|
|
}
|
|
scale 8
|
|
translate rgs*y
|
|
rotate < 0, 20, 0>
|
|
}
|
|
|
|
#declare rgs = R - 1.0; // Radius Geschütz
|
|
#declare Count = 0;
|
|
#declare wgsk = 50; // Gesützkreiswinkel
|
|
#declare GSKR1 =
|
|
union{
|
|
#while (Count < 360)
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Y=rgs*sin(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_1
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+45;
|
|
#end
|
|
}
|
|
|
|
#declare Count = 15;
|
|
#declare wgsk = 27; // Gesützkreiswinkel
|
|
#declare GSKR2 =
|
|
union{
|
|
#declare Y=rgs*sin(radians( wgsk ));
|
|
#while (Count < 360)
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_3
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_2
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_2
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#end
|
|
}
|
|
|
|
#declare Count = 15;
|
|
#declare wgsk = -27; // Gesützkreiswinkel
|
|
#declare GSKR3 =
|
|
union{
|
|
#declare Y=rgs*sin(radians( wgsk ));
|
|
#while (Count < 360)
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_3
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_2
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_2
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#end
|
|
}
|
|
|
|
#declare Count = 0;
|
|
#declare wgsk = -50; // Gesützkreiswinkel
|
|
#declare GSKR4 =
|
|
union{
|
|
#while (Count < 360)
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Y=rgs*sin(radians( wgsk ));
|
|
object {
|
|
GSKUPPEL_1
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+45;
|
|
#end
|
|
}
|
|
|
|
//---------------------------------------------------
|
|
// Schutzschirmprojektor
|
|
|
|
#declare SSPROJ =
|
|
union {
|
|
cylinder {
|
|
< -1.0 0, 0 >,
|
|
< 1.0, 0, 0 >,
|
|
0.2
|
|
}
|
|
sphere {
|
|
< 0.0, 0, 0 >, 1.0
|
|
scale < 0.5, 0.25, 0.3 >
|
|
translate < -1, 0, 0>
|
|
}
|
|
sphere {
|
|
< 0.0, 0.0, 0 >, 1.0
|
|
scale < 0.55, 0.3, 0.35 >
|
|
}
|
|
sphere {
|
|
< 0.0, 0.0, 0 >, 1.0
|
|
scale < 0.5, 0.25, 0.3 >
|
|
translate < 1, 0, 0>
|
|
}
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare rgs = R - 1; // Radius Schutzschirmprojektor
|
|
#declare Count = 22.5;
|
|
#declare wgsk = 50; // Winkel SSprojektorkreis
|
|
#declare SSKR1 =
|
|
union{
|
|
#while (Count < 360)
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Y=rgs*sin(radians( wgsk ));
|
|
object {
|
|
SSPROJ
|
|
scale 6
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+45;
|
|
#end
|
|
}
|
|
|
|
#declare Count = 22.5;
|
|
#declare wgsk = -50; // Winkel SSprojektorkreis
|
|
#declare SSKR2 =
|
|
union{
|
|
#while (Count < 360)
|
|
#declare X=rgs*sin(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Z=rgs*cos(radians( Count ))*cos(radians( wgsk ));
|
|
#declare Y=rgs*sin(radians( wgsk ));
|
|
object {
|
|
SSPROJ
|
|
scale 6
|
|
rotate < 90-wgsk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+45;
|
|
#end
|
|
}
|
|
|
|
//---------------------------------------------------
|
|
// Landeteller und Landestützen
|
|
|
|
#declare wldst = 15;
|
|
|
|
#declare LDST =
|
|
union{
|
|
cylinder {
|
|
< 0, 0.0, 0 >, < 0, -18.0, 0 >, 3
|
|
}
|
|
cylinder {
|
|
< 0, -18.0, 0 >, < 0, -36.0, 0 >, 2.5
|
|
}
|
|
cylinder {
|
|
< 0, -36.0, 0 >, < 0, -53.0, 0 >, 2
|
|
}
|
|
union {
|
|
difference {
|
|
sphere { < 0, 0, 0 >, 2.5
|
|
}
|
|
cylinder {
|
|
< 0, -0.1, 0 >, < 0, -2.7, 0 >, 2.7
|
|
}
|
|
}
|
|
cylinder {
|
|
< 0, 0.0, 0 >, < 0, -1.5, 0 >, 6.0
|
|
}
|
|
rotate < 0, 0, -wldst >
|
|
translate < 0, -53.0, 0 >
|
|
}
|
|
rotate < 0, 0, wldst >
|
|
}
|
|
|
|
#declare Count = 15;
|
|
#declare wltk = -40;
|
|
#declare rlt = R - 1;
|
|
|
|
#ifdef (_STUETZE)
|
|
#declare LTKR =
|
|
union{
|
|
#while (Count < 360)
|
|
#declare X=rlt*sin(radians( Count ))*cos(radians( wltk ));
|
|
#declare Z=rlt*cos(radians( Count ))*cos(radians( wltk ));
|
|
#declare Y=rlt*sin(radians( wltk ));
|
|
object {
|
|
LDST
|
|
rotate < 0, -90, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#end
|
|
texture { TERKONIT }
|
|
}
|
|
#else
|
|
#declare LTKR =
|
|
union{
|
|
#while (Count < 360)
|
|
#declare X=rlt*sin(radians( Count ))*cos(radians( wltk ));
|
|
#declare Z=rlt*cos(radians( Count ))*cos(radians( wltk ));
|
|
#declare Y=rlt*sin(radians( wltk ));
|
|
cylinder {
|
|
< 0, 1.0, 0 >
|
|
< 0, 0, 0 >, 6
|
|
rotate < 90-wltk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare Count=Count+30;
|
|
#end
|
|
texture { TERKONIT }
|
|
}
|
|
#end
|
|
|
|
//---------------------------------------------------
|
|
// Orter
|
|
|
|
#declare _ORTER_1 =
|
|
lathe {
|
|
cubic_spline
|
|
15,
|
|
<0, 0>,
|
|
<0, 0>,
|
|
<2.0, 0.0>,<1.0, 0.5>,<0.8, 0.9>, <1.0, 1.0>,
|
|
<1.250, 1.000>,<1.427, 1.073>,<1.500, 1.250>,<1.427, 1.427>,
|
|
<1.250, 1.500>, <0.5, 1.500>, < 0.177, 1.677 >
|
|
<0, 1.75>,
|
|
<0, 1.75>
|
|
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare _O_STAB =
|
|
union {
|
|
cylinder {
|
|
< 0, 0, 0 >,
|
|
< 0, 2.0, 0 >,
|
|
0.15
|
|
}
|
|
sphere {
|
|
< 0, 2.0, 0 >,
|
|
0.2
|
|
}
|
|
}
|
|
|
|
#declare _ORTER_2 =
|
|
union {
|
|
sphere {
|
|
< 0, 0.0, 0 >,
|
|
1.0
|
|
scale < 1.0, 0.5, 1.0 >
|
|
}
|
|
cylinder {
|
|
< 0, 0, 0 >,
|
|
< 0, 1.0, 0 >,
|
|
0.5
|
|
}
|
|
sphere {
|
|
< 0, 1.0, 0 >,
|
|
0.5
|
|
}
|
|
sphere {
|
|
< 0.0, 0.0, 0 >,
|
|
0.5
|
|
scale < 0.5, 1, 1 >
|
|
translate < 0.5, 1.0, 0 >
|
|
}
|
|
sphere {
|
|
< 0.0, 0.0, 0 >,
|
|
0.5
|
|
scale < 0.5, 1, 1 >
|
|
translate < -0.5, 1.0, 0 >
|
|
}
|
|
sphere {
|
|
< 0.0, 0.0, 0 >,
|
|
0.5
|
|
scale < 1, 1, 0.5 >
|
|
translate < 0, 1.0, 0.5 >
|
|
}
|
|
sphere {
|
|
< 0.0, 0.0, 0 >,
|
|
0.5
|
|
scale < 1, 1, 0.5 >
|
|
translate < 0, 1.0, -0.5 >
|
|
}
|
|
cylinder {
|
|
< 0, 1.5, 0 >,
|
|
< 0, 2.2, 0 >,
|
|
0.2
|
|
}
|
|
lathe {
|
|
cubic_spline
|
|
13,
|
|
<0, 0>,
|
|
<0, 0>,
|
|
<0.283, 0.117>, <0.400, 0.400>,
|
|
<0.41, 0.40>, <0.90, 0.40>,
|
|
<0.935, 0.415>, <1.000, 0.45>,<0.935, 0.485>,
|
|
<0.90, 0.50>, <0.50, 0.55>,
|
|
<0, 0.55>,
|
|
<0, 0.55>
|
|
scale < 1.5, 1, 0.5 >
|
|
rotate < 60, 0, 0>
|
|
translate < 0, 2.1, 0 >
|
|
}
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare wank = 69;
|
|
#declare rank = R-0.4;
|
|
#declare Y=rank*sin(radians( wank ));
|
|
#declare ORTER =
|
|
union {
|
|
#declare X=rank*sin(radians( 0 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 0 ))*cos(radians( wank ));
|
|
object {
|
|
_ORTER_2
|
|
scale 2
|
|
//rotate < 0, 0, 0 >
|
|
translate < X, Y-0.5, Z >
|
|
}
|
|
#declare X=rank*sin(radians( 180 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 180 ))*cos(radians( wank ));
|
|
object {
|
|
_ORTER_2
|
|
scale 2
|
|
rotate < 0, 180, 0 >
|
|
translate < X, Y-0.5, Z >
|
|
}
|
|
#declare X=rank*sin(radians( 90 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 90 ))*cos(radians( wank ));
|
|
object {
|
|
_ORTER_1
|
|
scale 2
|
|
rotate < 90-wank, 0, 0 >
|
|
rotate < 0, 90, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
#declare X=rank*sin(radians( 270 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 270 ))*cos(radians( wank ));
|
|
object {
|
|
_ORTER_1
|
|
scale 2
|
|
rotate < 90-wank, 0, 0 >
|
|
rotate < 0, 270, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
} // end union
|
|
|
|
//---------------------------------------------------
|
|
// Antennen
|
|
|
|
#declare _ANTENNE_1 =
|
|
lathe {
|
|
cubic_spline
|
|
17,
|
|
<0.0, 0>,
|
|
<0.0, 0>,
|
|
<1.0, 0.0>,<0.4, 1.29>,
|
|
<0.4, 1.300>,<0.541, 1.359>,<0.600, 1.500>,<0.541, 1.641>,
|
|
<0.4, 1.7>,<0.4, 1.89>,
|
|
<0.410, 1.900>, <0.495, 1.976>, <0.700, 2.400>, <0.495, 2.824>, <0.100, 2.999>,
|
|
<0, 3.0>,
|
|
<0, 3.0>
|
|
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare _A_STAB_1 =
|
|
union {
|
|
cylinder {
|
|
< 0, 0, 0 >,
|
|
< 0, 3.0, 0 >,
|
|
0.4
|
|
}
|
|
sphere {
|
|
< 0, 3.0, 0 >,
|
|
0.45
|
|
}
|
|
}
|
|
|
|
#declare _ANTENNE_2 =
|
|
union {
|
|
object {
|
|
_A_STAB_1
|
|
translate < 0.0, 0.0, 0.0 >
|
|
}
|
|
object {
|
|
_A_STAB_1
|
|
translate < -1.2, -0.6, -1.2 >
|
|
}
|
|
object {
|
|
_A_STAB_1
|
|
translate < -1.2, -1.4, 1.2 >
|
|
}
|
|
object {
|
|
_A_STAB_1
|
|
translate < 1.2, -1.3, 1.2 >
|
|
}
|
|
object {
|
|
_A_STAB_1
|
|
translate < 1.2, -0.5, -1.2 >
|
|
}
|
|
sphere {
|
|
< 0, 0.0, 0 >,
|
|
1.0
|
|
scale < 4.0, 2.0, 4.0 >
|
|
rotate < 90-wank, 0, 0 >
|
|
translate < 0, -0.9, -0.9>
|
|
}
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare _A_STAB =
|
|
union {
|
|
cylinder {
|
|
< 0, 0, 0 >,
|
|
< 0, 2.0, 0 >,
|
|
0.15
|
|
}
|
|
sphere {
|
|
< 0, 2.0, 0 >,
|
|
0.2
|
|
}
|
|
}
|
|
|
|
#declare _ANTENNE_3 =
|
|
union {
|
|
lathe {
|
|
cubic_spline
|
|
25,
|
|
<0, 0>,
|
|
<0, 0>,
|
|
<1.50, 0.00>, <0.76, 0.80>,
|
|
<0.800, 0.800>, <1.141, 0.859>, <1.200, 1.000>, <1.141, 1.141>, <0.700, 1.200>,
|
|
<0.64, 1.20>, <0.47, 1.80>,
|
|
<0.500, 1.800>, <0.641, 1.859>, <0.700, 2.000>, <0.641, 2.141>, <0.400, 2.200>,
|
|
<0.35, 2.20>,<0.20, 2.70>,
|
|
<0.210, 2.700>, <0.212, 2.788>, <0.300, 3.000>, <0.212, 3.212>, <0.05, 3.299>,
|
|
<0, 3.3>,
|
|
<0, 3.3>
|
|
}
|
|
object {
|
|
_A_STAB
|
|
rotate < 0, 0, -10 >
|
|
translate < 1.0, 0, 0 >
|
|
}
|
|
object {
|
|
_A_STAB
|
|
rotate < 0, 0, 10 >
|
|
translate < -1.0, 0, 0 >
|
|
}
|
|
object {
|
|
_A_STAB
|
|
rotate < 10, 0, 0 >
|
|
translate < 0, 0, 1.0 >
|
|
}
|
|
object {
|
|
_A_STAB
|
|
rotate < -10, 0, 0 >
|
|
translate < 0, 0, -1.0 >
|
|
}
|
|
texture { TERKONIT }
|
|
}
|
|
|
|
#declare Y=rank*sin(radians( wank ));
|
|
#declare ANTENNE =
|
|
union {
|
|
#declare X=rank*sin(radians( 45 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 45 ))*cos(radians( wank ));
|
|
object {
|
|
_ANTENNE_1
|
|
scale 2
|
|
translate < X, Y-0.5, Z >
|
|
}
|
|
#declare X=rank*sin(radians( 225 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 225 ))*cos(radians( wank ));
|
|
object {
|
|
_ANTENNE_1
|
|
scale 2
|
|
translate < X, Y-0.5, Z >
|
|
}
|
|
#declare X=rank*sin(radians( 135 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 135 ))*cos(radians( wank ));
|
|
object {
|
|
_ANTENNE_3
|
|
scale 1.5
|
|
translate < X, Y-0.3, Z >
|
|
}
|
|
#declare X=rank*sin(radians( 315 ))*cos(radians( wank ));
|
|
#declare Z=rank*cos(radians( 315 ))*cos(radians( wank ));
|
|
object {
|
|
_ANTENNE_2
|
|
scale 1.5
|
|
rotate < 0, 315, 0 >
|
|
translate < X, Y, Z >
|
|
}
|
|
} // end union
|
|
|
|
//---------------------------------------------------
|
|
// Beobachtungskuppel
|
|
|
|
#declare wbk = 63; // Winkel Beobachtungskuppel
|
|
#declare rbk = R - 0.5; // Radius Beobachtungskuppel
|
|
#declare Y=rbk*sin(radians( wbk ));
|
|
#declare Count = 67.5;
|
|
#declare BKPL =
|
|
union {
|
|
#while (Count < 360)
|
|
#declare X=rbk*sin(radians( Count ))*cos(radians( wbk ));
|
|
#declare Z=rbk*cos(radians( Count ))*cos(radians( wbk ));
|
|
sphere {
|
|
< 0, 0, 0 >, 1
|
|
hollow
|
|
texture { _T_GSK }
|
|
scale < 1, 0.5, 1 >
|
|
scale 5
|
|
rotate < 90-wbk, 0, 0 >
|
|
rotate < 0, Count, 0 >
|
|
translate < X, Y, Z >
|
|
} // end sphere
|
|
#declare Count=Count+180;
|
|
#end
|
|
} // end union
|
|
|
|
//---------------------------------------------------
|
|
// Raumer
|
|
|
|
#declare KR200 =
|
|
union {
|
|
object { SCHALE
|
|
texture {
|
|
_T_SCHALE
|
|
}
|
|
}
|
|
object { MANNSCHL }
|
|
object { HANGAR_B }
|
|
object { HANGARKR_OB }
|
|
object { HANGARKR_UT }
|
|
object { HANGAR_SJ }
|
|
object { WULST
|
|
texture {
|
|
_T_SCHALE
|
|
}
|
|
}
|
|
object { GSKP }
|
|
object { GSKR1 }
|
|
object { GSKR2 }
|
|
object { GSKR3 }
|
|
object { GSKR4 }
|
|
object { SSKR1 }
|
|
object { SSKR2 }
|
|
object { LTKR }
|
|
object { ORTER }
|
|
object { ANTENNE }
|
|
object { BKPL }
|
|
}
|
|
|
|
//---------------------------------------------------
|