
// Persistence of Vision Ray Tracer Include File
// POV-Ray 3.0
// File: KR100.pov
// Vers: 1.0
// Desc: Kugelraumer 100m Durchmesser
//       Leichter Kreuzer der STÄDTE- / STAATEN-Klasse
// Date: 31.01.97
// Auth: Harald Ottacher
//       email: ottacher@iwf.tu-graz.ac.at
//
////////////////////////////////////////////////////

#declare _MAT_gif = "krpl100.gif";
#declare _M_ANGL = 0.0;

#declare _FENSTER_R = 50;

//#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 100 Meter
#declare R = 50.0;     // Kugelradius
#declare wr = 7.0;     // Wulstradius

// Fenster
#declare F_O1 =
union {
   superellipsoid { < 0.5, 0.5 >
      scale < R+5, 0.75, 0.5 >
      translate < 0, 0, -1.25 >
   }
   superellipsoid { < 0.5, 0.5 >
      scale < R+5, 0.75, 0.5 >
      translate < 0, 0, 1.25 >
   }
   texture { TERKONIT }
 }

#declare Count = 0;
#declare F_OR =
union {
  #while (Count < 180)
    union {
      object {
        F_O1
        rotate < 0, Count-4, 0 >
      }
      object {
        F_O1
        rotate < 0, Count+4, 0 >
      }
      translate < 0, 27.5, 0 >
    }
    #declare Count=Count+20;
  #end

  #declare Count = 0;
  #while (Count < 180)
    object {
      F_O1
      rotate < 0, Count, 0 >
      translate < 0, 15.5, 0 >
    }
    #declare Count=Count+10;
  #end

  #declare Count = 0;
  #while (Count < 180)
    object {
      F_O1
      rotate < 0, Count, 0 >
      translate < 0, -15.5, 0 >
    }
    #declare Count=Count+10;
  #end
}

#declare FENSTER =
difference {
  object { F_OR }
  sphere { <0, 0, 0>, R-0.3
    hollow
    texture {
      _T_FENSTER
    }
    interior {
      _I_FENSTER
    }
  }
} // end difference

//----- Hangar Textur
#declare Mannschl =
texture {
  pigment {
    image_map {
      png "manns.png"
      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 {
      png "HB100.png"
      interpolate 4 //  4=normalized distance
      filter 5 1.0
      once
    }
    translate < -0.5, -0.5, 0 >
    scale < 15, 8 , 1 >
    rotate < 0, 90 ,0 >
  } // end pigment
} // end texture

#declare Hangar_23 =
texture {
  pigment {
    image_map {
      png "hg23_100.png"
      interpolate 4 // 4=normalized distance
      // filter 5 1.0
      once
    }
    translate < -0.5, -0.5, 0 >
    scale < 12, 6 , 1 >
    rotate < 0, 90 ,0 >
  } // end pigment
} // end texture

#declare Hangar_4 =
texture {
  pigment {
    image_map {
      png "hg4_100.png"
      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

//----- Hangar Tore
#declare msl_h = 8.75;      // Höhe Mannschl
#declare hg23_h = -21.5;    // Höhe Hangar unten
#declare hg4_h = 34;        // Höhe Hangar oben
#declare hgb_h = -42;       // Höhe Bodenhangar

#declare Count = 0;
#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, msl_h, 0 >
      }
      texture { TERKONIT }
      texture {
        Mannschl
        translate < 0, msl_h, 0 >
      }
      rotate < 0, Count ,0 >
    }  // end intersection
    #declare Count=Count+90;
  #end
} // end union

#declare HANGAR_B =
intersection {
  sphere { <0, 0, 0>, R-1.0 }
  box { <-1, -1, -1>, < -0.2,  1,  1>
    scale < R+5, 5, 10 >
    translate < 0, hgb_h, 0 >
  }
  texture { TERKONIT }
  texture {
    Hangar_B
    translate < R, hgb_h, 0 >
  } // end texture
  rotate < 0, 180, 0 >
} // end intersection

#declare HANGAR_23 =
difference {
  sphere { <0, 0, 0>,  R-1.0  }
  box { < -1, -1, -1>, < 1, 1, 1 >
    scale R
    translate < R+5, 0, 0 >
  }
  box { < -1, -1, -1>, < 1, 1, 1 >
    scale R
    translate < 0, R-5, 0 >
  }
  texture { TERKONIT }
  texture {
    Hangar_23
    rotate < 0, 67.5 ,0 >
    translate < 0, hg23_h, 0 >
  } // end texture
  texture {
    Hangar_23
    rotate < 0, -67.5 ,0 >
    translate < 0, hg23_h, 0 >
  } // end texture
} // end difference

#declare HANGAR_4 =
intersection {
  sphere { <0, 0, 0>, R-1.0 }
  box { <-1, -1, -1>, < -0.2,  1,  1>
    scale < R+5, 5, 11 >
    translate < 0, hg4_h, 0 >
  }
  texture { TERKONIT }
  texture {
    Hangar_4
    translate < R, hg4_h, 0 >
  } // end texture
} // end intersection


//----- Hangar Ausschnitte
// Mann Schleuse
#declare Count = 0;
#declare _MANNSCHL =
union {
  #while (Count < 180)
    superellipsoid { < 0.2, 0.2 >
      scale < R+5, 1.25, 2.5 >
      rotate < 0, Count ,0 >
      translate < 0, msl_h, 0 >
    }
    #declare Count=Count+90;
  #end
  texture { TERKONIT }
} // end union

// Hangar Boden
#declare _HANGAR_B =
object {
  superellipsoid { < 0.2, 0.2 >
    scale < R/2+5, 4, 9 >
    translate < R/2, 0, 0 >
    translate < 0, hgb_h, 0 >
  }
  texture { TERKONIT }
} // end object

// Hangar unten
#declare _HANGAR_23 =
union {
  superellipsoid { < 0.2, 0.2 >
    scale < R/2+5, 3, 7 >
    translate < -R/2, 0, 0 >
    rotate < 0, 67.5 ,0 >
    translate < 0, hg23_h, 0 >
  }
  superellipsoid { < 0.2, 0.2 >
    scale < R/2+5, 3, 7 >
    translate < -R/2, 0, 0 >
    rotate < 0, -67.5 ,0 >
    translate < 0, hg23_h, 0 >
  }
  texture { TERKONIT }
} // end union

// Hangar oben
#declare _HANGAR_4 =
object {
  superellipsoid { < 0.2, 0.2 >
    scale < R/2+5, 4, 10 >
    translate < -R/2, 0, 0 >
    translate < 0, hg4_h, 0 >
  }
  texture { TERKONIT }
} // end object

#declare SCHALE =
object {
  difference {
    sphere { <0, 0, 0>  R
    }
    object { _MANNSCHL }     // Mann Schleusen
    object { _HANGAR_B }     // Hangar Boden
    object { _HANGAR_23 }    // Hangar unten
    object { _HANGAR_4 }     // Hangar oben
    object { FENSTER }
  }
  bounded_by {
    sphere { <0, 0, 0>  R
    }
  }
} // 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 1.5
  texture { TERKONIT
    finish {
      ambient 0.05
      diffuse 0.7
      reflection 0.5
    }
  }
} // end obj

#declare r1 = 3.75;
#declare dsk = 45;

#declare WULST =
object {
  difference {
    union {
      torus { R,  wr }
      cylinder { -wr*y , wr*y, R }
    }
    #declare Count = 15;
    #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+30;
    #end
    #declare Count = 15;
    #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+30;
    #end
  }
   bounded_by {
     cylinder {
       < 0, -wr, 0 >,
       < 0,  wr, 0 >,
       R+wr
     }
   }
} // 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 GSKUPPEL_1 =
object {
  union {
    sphere {
      < 0, 0, 0 >, 1
      texture { TERKONIT }
      scale < 1, 0.75, 1 >
    }
    object { GSROHR }
    scale 0.8
  }
  scale 3
} // end obj


#declare GSKUPPEL_2 =
object {
  union {
    sphere {
      < 0, 0, 0 >, 1
      texture { TERKONIT }
      scale < 1, 0.75, 1 >
    }
    object { GSROHR }
    scale 0.8
  }
  scale 4
} // end obj

#declare rgs = R - 1.0;

#declare GSKP =
union {
  sphere { < 0, 0, 0 >, 1
    texture { TERKONIT }
    scale <1, 0.5, 1>
  }
  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.7
    rotate < -40, 0, 0 >
  }
  scale 7
  translate rgs*y
}

#declare rgs = R - 0.5;
#declare Count = 45;
#declare wgsk = 50;
#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+90;
  #end
}

#declare Count = 0;
#declare wgsk = 25;
#declare GSKR2 =
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_2
      rotate < 90-wgsk, 0, 0 >
      rotate < 0, Count, 0 >
      translate < X, Y, Z >
    }
    #declare Count=Count+45;
  #end
}

#declare Count = 0;
#declare wgsk = -25;
#declare GSKR3 =
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_2
      rotate < 90-wgsk, 0, 0 >
      rotate < 0, Count, 0 >
      translate < X, Y, Z >
    }
    #declare Count=Count+45;
  #end
}

#declare Count = 45;
#declare wgsk = -50;
#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+90;
  #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 - 0.5;
#declare Count = 0;
#declare wgsk = 52;
#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 3
      rotate < 90-wgsk, 0, 0 >
      rotate < 0, Count, 0 >
      translate < X, Y, Z >
    }
    #declare Count=Count+90;
  #end
}

#declare Count = 0;
#declare wgsk = -45;
#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 3
      rotate < 90-wgsk, 0, 0 >
      rotate < 0, Count, 0 >
      translate < X, Y, Z >
    }
    #declare Count=Count+90;
  #end
}

//---------------------------------------------------
// Landeteller und Landestützen

#declare wldst = 15;

#declare LDST =
union{
  cylinder {
    < 0, 0.0, 0 >, < 0, -11.0, 0 >, 1.25
  }
  cylinder {
    < 0, -11.0, 0 >, < 0, -22.0, 0 >, 1.0
  }
  cylinder {
    < 0, -22.0, 0 >, < 0, -32.0, 0 >, 0.75
  }
  union {
    difference {
      sphere { < 0, 0, 0 >, 1
      }
      cylinder {
        < 0, -0.1, 0 >, < 0, -1.1, 0 >, 1.25
      }
    }
    cylinder {
      < 0, 0.0, 0 >, < 0, -0.7, 0 >, 3.0
    }
    rotate < 0, 0, -wldst >
    translate < 0, -32.0, 0 >
  }
  rotate < 0, 0, wldst >
}

#declare Count = 15;
#declare wltk = -35;
#declare rlt = R -0.3;

#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, 0.6, 0 >
      < 0, 0, 0 >, 3
      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 = 65;
#declare rank = R-0.2;
#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
    //rotate < 0, 90, 0 >
    translate < X, Y-0.1, Z >
  }
  #declare X=rank*sin(radians( 120 ))*cos(radians( wank ));
  #declare Z=rank*cos(radians( 120 ))*cos(radians( wank ));
  object {
    _ORTER_1
    rotate < 90-wank, 0, 0 >
    rotate < 0, 120, 0 >
    translate < X, Y, Z >
  }
  #declare X=rank*sin(radians( 240 ))*cos(radians( wank ));
  #declare Z=rank*cos(radians( 240 ))*cos(radians( wank ));
  object {
    _ORTER_1
    rotate < 90-wank, 0, 0 >
    rotate < 0, 240, 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( 60 ))*cos(radians( wank ));
  #declare Z=rank*cos(radians( 60 ))*cos(radians( wank ));
  object {
    _ANTENNE_1
    scale 1.6
    translate < X, Y-0.1, Z >
  }
  #declare X=rank*sin(radians( -60 ))*cos(radians( wank ));
  #declare Z=rank*cos(radians( -60 ))*cos(radians( wank ));
  object {
    _ANTENNE_3
    translate < X, Y-0.1, Z >
  }
  #declare X=rank*sin(radians( 180 ))*cos(radians( wank ));
  #declare Z=rank*cos(radians( 180 ))*cos(radians( wank ));
  object {
    _ANTENNE_2
    rotate < 0, 180, 0 >
    translate < X, Y, Z >
  }
} // end union

//---------------------------------------------------
// Beobachtungskuppel

#declare wbk = 66;
#declare rbk = R-0.5;
#declare Y=rbk*sin(radians( wbk ));
#declare X=rbk*sin(radians( 210 ))*cos(radians( wbk ));
#declare Z=rbk*cos(radians( 210 ))*cos(radians( wbk ));
#declare BKPL =
sphere {
  < 0, 0, 0 >, 1
  hollow
  texture { _T_GSK }
  interior { _I_GSK }
  scale < 1, 0.5, 1 >
  scale 4
  rotate < 90-wbk, 0, 0 >
  rotate < 0, 210, 0 >
  translate < X, Y, Z >
} // end sphere

//---------------------------------------------------
// Raumer

#declare KR100 =
union {
  object { SCHALE
    texture {
      _T_SCHALE
    }
  }
  object { MANNSCHL }
  object { HANGAR_B }
  object { HANGAR_23 }
  object { HANGAR_4 }
  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 }
}

//---------------------------------------------------
