3d/pr/sol/ringwulst.pov

187 lines
3.0 KiB
POVRay

/* Parameter:
* R1, R2: Durchmesser des Torus
* Ringwulst_Triebwerk_An: (-45, 0, 45) Sind Triebwerke an, und
* wenn ja, in welche Richtung?
*/
#if (!defined(Ringwulst_Triebwerk_An))
#declare Ringwulst_Triebwerk_An = 0;
#end
#declare Hangars_Ringwulst_neg =
difference {
union {
#declare i = 10;
#declare ii = 10;
#while (i < 360)
union {
box {
<-50, 40, 0>
< 50, 80, R1+R2>
}
box {
<-50, 120, 0>
< 50, 220, R1+R2>
}
box {
<-50, -40, 0>
< 50, -80, R1+R2>
}
box {
<-50, -120, 0>
< 50, -220, R1+R2>
}
rotate <0, i, 0>
}
#declare i = i + ii;
#declare ii = 30 - ii;
#end
}
torus {
R1, R2-10
}
texture {
Ynkelonium_Texture
}
}
#declare Geschuetze_Ringwulst_aussen =
union {
#declare w = -45;
#while (w <= 45)
#declare i = 10;
#declare ii = 10;
#while (i < 360)
union {
sphere {
<0, 0, 0> 20
}
cone {
<0, 0, 0> 10
<30, 30, 0> 5
}
cone {
<0, 0, 0> 10
<30, -30, 0> 5
}
translate <R2, 0, 0>
rotate <0, 0, w>
translate <R1, 0, 0>
rotate <0, i, 0>
}
#declare i = i + ii;
#declare ii = 30 - ii;
#end
#declare w = w + 90;
#end
texture {
Ynkelonium_Texture
}
}
#declare Geschuetze_Ringwulst_mitte =
union {
#declare w = 0;
#while (w <= 0)
#declare i = 0;
#while (i < 360)
union {
sphere {
<0, 0, 0> 20
}
cone {
<0, 0, 0> 10
<30, 30, 0> 5
}
cone {
<0, 0, 0> 10
<30, -30, 0> 5
}
translate <R2, 0, 0>
rotate <0, 0, w>
translate <R1, 0, 0>
rotate <0, i, 0>
}
#declare i = i + 10;
#end
#declare w = w + 90;
#end
texture {
Ynkelonium_Texture
}
}
#declare Ringwulst =
union {
difference {
torus {
R1, R2
}
#declare i = 0;
#while (i < 360)
object {
Triebwerk_neg
rotate <0, 0, 45>
translate <R1, 0, 0>
rotate <0, i, 0>
}
object {
Triebwerk_neg
rotate <0, 0, -45>
translate <R1, 0, 0>
rotate <0, i, 0>
}
#declare i = i + 30;
#end
object {Hangars_Ringwulst_neg}
}
#if (Ringwulst_Triebwerk_An)
#local i = 0;
#while (i < 360)
intersection {
cylinder {
<0, 0, 0> <1, 0, 0> 1
}
sphere {
<0, 0, 0>, 1
}
hollow on
pigment { rgbt 1.0 }
interior {
media {
emission rgb <0.2, 0.4, 0.8>
density {
gradient x
density_map {
[0.0 rgb 0.05]
[0.5 rgb 0.01]
[1.0 rgb 0.0]
}
}
}
}
scale <500, 60, 60>
translate <350, 0, 0>
rotate <0, 0, Ringwulst_Triebwerk_An>
translate <R1, 0, 0>
rotate <0, i, 0>
}
#local i = i + 30;
#end
#end
cone {
<0, -R2, 0>, R1,
<0, R2, 0>, R1
}
object {Geschuetze_Ringwulst_aussen}
object {Geschuetze_Ringwulst_mitte}
texture {
Ynkelonium_Texture
}
}