diff --git a/schlot/GNUmakefile b/schlot/GNUmakefile new file mode 100644 index 0000000..12e64e6 --- /dev/null +++ b/schlot/GNUmakefile @@ -0,0 +1,24 @@ +# what's where? +include GNUmakevars + +all: \ + schlot.png \ + flame.png \ + rocket_nozzle.png \ + + +%.ppm: %.pov + $(POVRAY) +W$(WIDTH) +H$(HEIGHT) +V -I$< +L$(POVINC) +D +FP + +%.png: %.pov + $(POVRAY) +V -I$< +L$(POVINC) +D +FN + +%.pov: make% + $< > $@ + +%.gif: %.ppm + ppmquant 256 $< | ppmtogif > $@ + +schlot.png: schlot.pov povray.ini +flame.png: flame.pov povray.ini + diff --git a/schlot/flame.pov b/schlot/flame.pov new file mode 100644 index 0000000..9a3a7a7 --- /dev/null +++ b/schlot/flame.pov @@ -0,0 +1,42 @@ +#local denT=density { spherical + density_map { + [.01 rgb 0][.1 rgb <0,.35,.75> ][.3 rgb 0][.65 rgb <0,.375,.5>][1 rgb 1] + } +} + +#local Thrust = 1; +#local Clock = 0.2; +#local iI = 5; +#local rT = 2; + + sphere { 0,2 hollow no_shadow + texture { pigment { rgbt 1 } } + interior { + media { emission .2 method 3 intervals 1 + density { denT + translate y*Clock*18+1+iI + scale <2,1,2> + warp { turbulence .15 lambda 3 } + scale <.5,1,.5> + translate -y*Clock*18-1-iI + } + } + media { absorption .2 method 3 intervals 1 + density { denT + translate y*Clock*18+1+iI + scale <2,1,2> + warp { turbulence .15 lambda 3 } + scale <.5,1,.5> + translate -y*Clock*18-1-iI + } + } + } + scale <1,9*Thrust,1>*(rT-1) + } + +camera { + location <-0, 0 -4> + look_at <0, 0, 0> + angle 30 +} + diff --git a/schlot/povray.ini b/schlot/povray.ini new file mode 100644 index 0000000..2ac3847 --- /dev/null +++ b/schlot/povray.ini @@ -0,0 +1,6 @@ ++A ++MB5 ++QR ++HTN ++fp +w400 +h300 +d1 +display_gamma = 2.2 diff --git a/schlot/rocket_nozzle.pov b/schlot/rocket_nozzle.pov new file mode 100644 index 0000000..8acb58e --- /dev/null +++ b/schlot/rocket_nozzle.pov @@ -0,0 +1,197 @@ + + +// Persistence of Vision Ray Tracer Scene Description File +// File: rocket nozzle.pov +// Vers: 3.5 +// Desc: example of a rocket nozzle and supersonic exhaust +// Date: 2004.139 +// Auth: Bob Hughes +// Mail: omniverse [at] charternet +// Note: plume expands to mimic going from atmosphere to vacuum of space +// Free: use as needed, no credit necessary + + +global_settings { +assumed_gamma 1 +} + +camera { + location <0,0,-15> + angle 50 + look_at 2*x +} + +light_source { + -1000*z, + 1 + rotate <30,-30,0> +} + +plane {z,100 + pigment { + hexagon color rgb 1, color rgb 0.5, color rgb 0 + rotate 90*x scale 10 + } + hollow +} + +/* Rocket Nozzle */ + +#declare N= +function { + +(sin(0.667*pow(x,4))-pow(1.04*pow(x,2),1.12)-pow(y,2)-pow(z,2)+0.4)-0.0333*x +} + +#declare Nozzle= +isosurface { + function { + abs(N(x,y,z))-0.03 + } + contained_by { + box {<-1.4,-0.75,-0.75>,<-0.125,0.75,0.75>} + } + + max_gradient 2 + //all_intersections + texture { + pigment { + gradient x + color_map { // nozzle's heated colors + [0 color rgb 0.5] + [0.3 color rgb <5,0.5,0>] + [1 color rgb <8,5,0.5>] + } + scale 1.1 + } + normal { + gradient x 0.6 scallop_wave scale 0.05 + } + finish { + ambient 0.05 diffuse 0.3 specular 0.5 roughness 0.01 + } + } + scale <1.5,1,1> //translate x +} + +/* Exhaust Plume */ + +#declare S= +density { + function {N(x,y,z)}//spherical + density_map { + [0 rgb 0] + [0.0125 rgb <0.1,0.3,0.9>] + [0.1 rgb <0.1,0.3,0.9>*0.02] + [0.6 rgb <0.1,0.3,0.9>*0.06] + [1 rgb <0.1,0.3,0.9>] + } + translate -x/6 +} + +#declare GS= +density { + gradient x + density_map { + [0 S] + [0.5 rgb 0] + } +} + +#declare C= +density { + cylindrical + density_map { + [0.1 rgb 0] + [0.25 rgb <0.9,0.3,0.6>*0.25] + [0.5 rgb <0.9,0.3,0.6>*2] + [0.75 rgb <0.9,0.3,0.6>*0.25] + [0.9 rgb 0] + } + poly_wave 0.8 + warp {turbulence <0.2+0.1*clock,0,0.2+0.1*clock>} + warp {repeat y/4 flip y} + warp {turbulence <0.2,0,0.2>*clock} + scale <1/3-0.15*clock,1/3,1/3-0.15*clock> //rotate 90*z +} + +#declare G= +density { + gradient y + density_map { + [0.1 rgb 0] + [0.2 rgb 0.05] + [0.5 C] + [0.6 C] + [0.8 rgb 0.05] + [0.9 rgb 0] + } + poly_wave 0.4 frequency 8 +} + +#declare GC= +density { + cylindrical + density_map { + [0.25 rgb 0] + [0.75 G] + [1 rgb 0] + } + rotate 90*z +} + +#declare X= +function(x) {x} + + +#declare Exhaust= +sphere { + 0,1 + scale <0.5,1,1> translate -0.5*x + pigment { + color rgbt 1 + } + interior { + media { + samples 15 + emission 1.5 + density { + function {abs(X(x))} + density_map { + [0 rgb 0] + [0.5 GC] + [0.75 GS] + } + } + } + media { + samples 15 + absorption 0.5 + density { + function {abs(X(x))} + density_map { + [0 rgb 0] + [0.5 GC] + [0.75 GS] + } + } + } + } + scale <12,1.5+1.5*clock,1.5+1.5*clock> translate <11.2+0.4*clock,0,0> + hollow +} + +/* Finished Nozzle */ + +union { + object { + Nozzle + } + object { + Exhaust + } + translate -3*x + rotate 75*clock*y +} + + diff --git a/schlot/rotate.pov b/schlot/rotate.pov new file mode 100644 index 0000000..b75af3a --- /dev/null +++ b/schlot/rotate.pov @@ -0,0 +1,81 @@ +#include "colors.inc" + +global_settings { + assumed_gamma 1.0 + ambient_light rgb<0.5, 0.5, 0.5> +} +background { color rgb<0.2, 0.4, 0.8> } +light_source { + <+200, 200, -00> + color White +} +light_source { + <-200, 120, -171> + color White*0.5 +} +camera { + location <+020, 46, +10> + look_at <-0, 0, 0> + angle 30 +} + +// rotate around x +#local aa = 0; +#while (aa <= 45) + sphere { + <0, 0, 10> aa/40 + 1 + pigment { color rgb <1, 0.5, 0.5> } + rotate + } + #local aa = aa + 1; +#end + +// rotate around y +#local aa = 0; +#while (aa <= 45) + sphere { + <10, 0, 0> aa/40 + 1 + pigment { color rgb <0.5, 1.0, 0.5> } + rotate <0, aa, 0> + } + #local aa = aa + 1; +#end + +// rotate around z +#local aa = 0; +#while (aa <= 45) + sphere { + <0, 10, 0> aa/40 + 1 + pigment { color rgb <0.5, 0.5, 1> } + rotate <0, 0, aa> + } + #local aa = aa + 1; +#end + + +// background +cylinder { + <0, 1, 0>, + <0, -1, 0>, 10 + pigment { + color rgbf <1, 1, 1, 0.8> + } +} + +cone { + <0, 0, 0>, 0 + <1000, 0, 0>, 10 + pigment { color <1, 0, 0> } +} + +cone { + <0, 0, 0>, 0 + <0, 1000, 0>, 10 + pigment { color <0, 1, 0> } +} + +cone { + <0, 0, 0>, 0 + <0, 0, 1000>, 10 + pigment { color <0, 0, 1> } +} diff --git a/schlot/schlot.pov b/schlot/schlot.pov new file mode 100644 index 0000000..9baad0e --- /dev/null +++ b/schlot/schlot.pov @@ -0,0 +1,220 @@ +#include "colors.inc" +#include "metals.inc" + +#declare eps = 1e-6; + +global_settings { + assumed_gamma 1.0 + ambient_light rgb<0.5, 0.5, 0.5> +} +background { color rgb<0.2, 0.4, 0.8> } +light_source { + <+200, 200, -00> + color White +} +light_source { + <-200, 120, -171> + color White*0.5 +} +camera { + location <-60, 12, -40> + look_at <40, 10, 0> + angle 30 +} + + +// #declare schlot = union { +// #local h = 0; +// #while (h < 40) +// #local aa = 0; +// #while (aa < 360) +// box { +// +// } +// #local aa += 20 +// #end +// #local h = h + 0.2 +// #end +// } + +#declare schlot = + union { + difference { + cone { + <0, 0, 0> 1.5 + <0, 40, 0> 1.2 + } + cone { + <0, 0-eps, 0> 1.2 + <0, 40+eps, 0> 0.94 + } + pigment { + color White + } + } + #local h = 0; + #while (h < 40) + #local aa = 0; + #local rr = 1.52 - h * .3 / 40; + #local w = rr * 6 * 20 / 360; // 6 = a bit less then 2pi + #while (aa < 360) + box { + , + texture { pigment {color Red} } + rotate <0, aa + h * 50, 0> + } + #local aa = aa + 20; + #end + #local h = h + 0.2; + #end + } + +#declare foerderband = + union { + union { + cylinder {<0, 0, -1>, <20, 0, -1>, 0.1 } + cylinder {<0, 0, +1>, <20, 0, +1>, 0.1 } + sphere {< 0, 0, -1>, 0.1 } + sphere {<20, 0, -1>, 0.1 } + sphere {< 0, 0, +1>, 0.1 } + sphere {<20, 0, +1>, 0.1 } + #local xx = 0; + #while (xx <= 20) + cylinder { , , 0.2 } + #local xx = xx + 1; + #end + union { + box { + <0, 0.2, -0.8>, <20, 0.21, +0.8> + } + box { + <0, -0.2, -0.8>, <20, -0.21, +0.8> + } + intersection { + cylinder { <0, 0, -0.8>, <0, 0, +0.8>, 0.21 } + box { <-0.21, -0.21, -0.8>, <0, +0.21, +0.8> } + } + intersection { + cylinder { <0, 0, -0.8>, <0, 0, +0.8>, 0.21 } + box { <+0.21, -0.21, -0.8>, <0, +0.21, +0.8> } + translate <20, 0, 0> + } + pigment { color <0.5, 0.5, 0.5> } + } + pigment { color <0.7, 0.7, 0.7> } + rotate <0, 0, -30> + } + union { + #local xx = sqrt(20*20 - 10*10); + cylinder { + , , 0.1 + } + cylinder { + , , 0.1 + } + pigment { color <0.7, 0.7, 0.7> } + rotate <0, 0, -30> + } + } + +#declare fabrik = + union { + difference { + union { + box { + <1.5, 0, -5>, <30, 15, 15> + } + prism { + linear_spline + 1.5, 30 + 4 + <15, -5>, <15, 15>, <20, 5>, <15, -5> + matrix < + 0, 1, 0, + 1, 0, 0, + 0, 0, 1, + 0, 0, 0 + > + + } + } + union { + // Fenster + #local xx = 6; + #while (xx < 30) + box {, } + cylinder { , , 1} + + box {, } + cylinder { , , 1} + + #local xx = xx + 4; + #end + // Tuer + box {<30+eps, 0, 3>, <29-eps, 3, 7>} + cylinder { <30+eps, 3, 5>, <29- eps, 3, 5>, 2} + // Innenraum + box { + <2.0, 0, -4>, <29, 15, 14> + } + // Durchlaesse fuer Foerderbander + box {<30+eps, 10, -3.2>, <29-eps, 11.5, -0.8>} + box {<30+eps, 10, 13.2>, <29-eps, 11.5, 10.8>} + } + pigment { + brick + brick_size <0.5, 0.2, 0.5> + mortar 0.02 + } + + } + object { + foerderband + translate <29, 10.5, -2> + } + object { + foerderband + translate <29, 10.5, +12> + } + union { + // Tuer + box {<-0.05, 0, 3>, <0.05, 3, 7>} + cylinder { <-0.05, 3, 5>, <0.05, 3, 5>, 2} + translate <29.5, 0, 0> + texture { T_Brass_1B } + } + } + +object { + schlot +} +object { + fabrik +} +cone { + <56, 0, -2>, 10, <56, 5, -2>, 0 + texture { + pigment { color <0.5, 0.5, 0.2> } + } +} + +cone { + <56, 0, 12>, 10, <56, 5, 12>, 0 + texture { + pigment { color <0.2, 0.2, 0.2> } + } +} + +box { + <-10, 0, -20>, <70, 0.01, +30> + texture { + pigment { color <0.3, 0.3, 0.2> } + } +} +plane { + <0, 1, 0> + 0 + pigment { + color <0.2, 0.8, 0> + } +}