#include "kabine.pov"
#include "kabine4.pov"
#include "T_bodenbelag.pov"
#include "ortung.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 deck_12 = 
    union {

	// Deck
	#if (1)
	intersection {
	    union {
		difference {
		    object { huelle }
		    // Ausschnitte
		}
	    }
	    box {
		<-50, 10, -50>
		< 50,  5,  50>
	    }
	}
	#end
	difference {
	    cone {
		<0,  5.2, 0> 6
		<0,  4.8, 0> 6
		texture { T_arkonstahl }
	    }
	}

	// Zentrale
	object {
	    ortungs_zentrale
	    translate <0, 5.2, 0>
	}
	


	// Kabinen


	object {
	    kabinen_deck
	    translate <0, 14.8-3*2.84, 0>
	}
	object {
	    kabinen_deck
	    translate <0, 14.8-4*2.84, 0>
	}
	// Stiegenhaeuser
	#local J = 0;
	#while (J < 360)
	    union {
		#local I= 0;
		#while (I < 6)
		    box {
			<-10+(I+1)*0.4, 14.8-3*2.84 - I*0.18,        0>
			<-10+I*0.4,     14.8-3*2.84 - I*0.18 - 0.1, +1>
			texture { T_bodenbelag }
		    }
		    #local I = I + 1;
		#end

		#local I= 0;
		#while (I < 10)
		    box {
			<-10+(I+1)*0.4, 14.8-4*2.84 + I*0.196,        0>
			<-10+I*0.4,     14.8-4*2.84 + I*0.196 - 0.1, -1>
			texture { pigment { rgb <1, 1, 0> } }
		    }
		    #local I = I + 1;
		#end

		box {
		    <-6,    5.2,        0>
		    <-7.6,  5.2 - 0.1, +1>
		    texture { pigment { rgb <1, 0, 0> } }
		}
		rotate <0, J, 0>
	    }

	    union {
		#local I= 0;
		#while (I < 4)
		    box {
			<-10+(I+1)*0.4, 14.8-2*2.84 - I*0.205         0>
			<-10+I*0.4,     14.8-2*2.84 - I*0.205 - 0.1, +1>
			texture { T_bodenbelag }
		    }
		    #local I = I + 1;
		#end

		#local I= 0;
		#while (I < 10)
		    box {
			<-10+(I+1)*0.4, 14.8-3*2.84 + I*0.202,        0>
			<-10+I*0.4,     14.8-3*2.84 + I*0.202 - 0.1, -1>
			texture { pigment { rgb <1, 1, 0> } }
		    }
		    #local I = I + 1;
		#end

		box {
		    <-6,    8.3,        0>
		    <-8.4,  8.3 - 0.1, +1>
		    texture { pigment { rgb <1, 0, 0> } }
		}
		rotate <0, J, 0>
	    }
	    #local J = J + 90;
	#end

    }


