// 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 } } //---------------------------------------------------