// dak.pov // This model includes all textures at their respective objects to avoid // moving the textures separately and have objects combined with differing // textures. // (c) 2004 Michael Jung #include "textures.inc" #include "transforms.inc" #include "stdinc.inc" // Parameter: BeamAngle - angle between beam and lateral ship axis. #ifndef (BeamAngle) #declare BeamAngle = 20*pi/180; #end #declare T_Rope = texture { pigment { spiral1 2 color_map { [0.4 color DarkTan] [1 color Gray35] } } scale .015 rotate 90*x } #declare a = .85; #declare RumpfBasis = intersection { quartic { // extends 6x2x2 // x^2 - x^2z^2 + y^2z^2 + 4y^2z + 4y^2 + z^4 + 4z^3 + 3z^2 - 4z = 4 <0,0,0,0,0,0,0,-1,0,1, 0,0,0,0,0,0,0,0,0,0, 0,0,0,a*a,2*a*(1+a),(a+1)*(a+1),0,0,0,0, a*a,2*a*(a+1),(2*a+1),-2*a*(a+1),-(1+a)*(1+a)> clipped_by { box { <-3,-1,-1>, <3,1,1> } } rotate -90*x translate y rotate -10*x translate -y } plane { y, 0 rotate 120*z translate -1.5*x } plane { y, 0 } translate .455*y - .1*x } #declare RumpfBasisSpiegel = object { RumpfBasis matrix <1,0,0,0,1,0,0,0,-1,0,0,0> } #declare Rumpf = union { intersection { object { RumpfBasis } object { RumpfBasis scale .98 inverse } sphere { 0, 1 scale <4,1,4> translate 1.105*y inverse } plane { -z, 0 } } intersection { object { RumpfBasisSpiegel } object { RumpfBasisSpiegel scale .98 inverse } sphere { 0, 1 scale <4,1,4> translate 1.105*y inverse } plane { z, 0 } } scale <7.5/2.8, 1.6/.65, 3/1.53> texture { DMFWood2 rotate 90*y scale 3 translate -5*y } } #declare Deck = union { intersection { object { RumpfBasis scale .99 } plane { -z, 0 } plane { y, 0 } } intersection { object { RumpfBasisSpiegel scale .99 } plane { z, 0 } plane { y, 0 } } scale <7.5/2.8, 1.6/.65, 3/1.53> texture { DMFWood2 rotate 90*y scale 3 } } #declare Reling = union { intersection { object { RumpfBasis scale 1.01 } object { RumpfBasis scale .97 inverse } sphere { 0, 1 scale <4,1,4> translate 1.111*y inverse } sphere { 0, 1 scale <4,1,4> translate 1.099*y } plane { -z, 0 } } intersection { object { RumpfBasisSpiegel scale 1.01 } object { RumpfBasisSpiegel scale .97 inverse } sphere { 0, 1 scale <4,1,4> translate 1.111*y inverse } sphere { 0, 1 scale <4,1,4> translate 1.099*y } plane { z, 0 } } scale <7.5/2.8, 1.6/.65, 3/1.53> texture { DMFWood4 rotate 60*y scale 30 } } #declare Kiel = union { intersection { prism { -.025, .025, 7 <1.85, 0> + .025*u, <1, -1> + .0125*(u-v), <-1, -1> - .0125*(u+v), <-1, -1> + .0125*(u+v), <1, -1> - .0125*(u-v), <1.85, 0> - .025*u, <1.85, 0> + .025*u rotate -90*x translate .455*y - .1*x } plane { y, 0 rotate 120*z translate -1.5*x + .455*y - .1*x } } intersection { object { RumpfBasis scale 1.01 } sphere { 0, 1 scale <4,1,4> translate 1.105*y inverse } plane { -y, .025 rotate 120*z translate -1.5*x + .455*y - .125*x } plane { -z, 0 } sphere { 0, 1 scale <3, 1.075, .525> translate .455*y - .125*z inverse } texture { DMFWood2 rotate 90*y rotate -30*z scale 3 } } intersection { object { RumpfBasisSpiegel scale 1.01 } sphere { 0, 1 scale <4,1,4> translate 1.105*y inverse } plane { -y, .025 rotate 120*z translate -1.5*x + .455*y - .125*x } plane { z, 0 } sphere { 0, 1 scale <3, 1.075, .525> translate .455*y + .125*z inverse } texture { DMFWood2 rotate 90*y rotate -30*z scale 3 } } scale <7.5/2.8, 1.6/.65, 3/1.53> texture { DMFWood2 rotate 90*y rotate 30*z scale 3 } } #declare Luke = box { <1.9, -.1, .75>, <.7, .075,-.75> texture { DMFWood2 rotate 90*y scale 3 } } #declare Lukenrahmen = union { box { <1.925, .1, .775>, <1.875, .05, -.775> texture { DMFWood4 rotate 195*y scale 5 } } box { <.725, .1, .775>, <.675, .05, -.775> texture { DMFWood4 rotate 15*y scale 5 } } box { <.725, .1, .775>, <1.875, .05, .725> texture { DMFWood4 rotate 105*y scale 5 } } box { <1.925, .1, -.775>, <.675, .05, -.725> texture { DMFWood4 rotate 285*y scale 5 } } } #declare Quarterdeck = union { intersection { sphere { 0, 1 scale <4.5, 1.4, 1.7> texture { DMFWood2 rotate 90*y scale 3 translate -5*y } } plane { y, 0 texture { DMFWood2 rotate 90*y scale 3 } } plane { x, -1 texture { DMFWood2 rotate 90*x scale 3 translate z - x } } plane { -x, 3.8 texture { DMFWood2 rotate 90*x scale 3 translate z - 3.8*x } } box { <-2.35, .01, -.175>, <-2.75, -.8, .175> inverse } plane { y, -.025 rotate 120*z translate -1.5*x + .455*y - .1125*x scale <7.5/2.8, 1.6/.65, 1> translate -.8*y texture { DMFWood2 rotate 90*x rotate 40*z translate 2*z scale 3 } } } intersection { sphere { 0, 1 scale <4.5, 2.8, 1.7> } sphere { 0, 1 scale <4.5, 2.8, 1.7> - .0125 inverse } plane { y, .25 } plane { -y, 0 } plane { x, -1 } plane { -x, 3.8 } texture { DMFWood2 rotate 90*x translate x } } #local i = -1.8; #while (i < 3.8) #local i = i + 2.8; intersection { sphere { 0, 1 scale <4.5, 2.8, 1.7> } plane { y, .25 } plane { -y, .01 } plane { x, -i } plane { -x, i + .02 } texture { DMFWood2 rotate 90*x translate 5*z } } #end intersection { sphere { 0, 1 scale <4.5, 2.8, 1.7> } sphere { 0, 1 scale <4.5, 2.8, 1.7> - .0125 inverse } plane { y, .5 } plane { -y, -.25 } union { #local i = -1; #while (i < 5) #local i = i + 1; intersection { plane { x, -.975 - 2*i/11 * 2.8 } plane { -x, 1.025 + (2*i+1)/11 * 2.8 } } #end } texture { DMFWood2 rotate 90*y translate 5*y scale 2 } } #local i = -2; #while (i < 1) #local i = i + 1; intersection { sphere { 0, 1 scale <4.5, 2.8, 1.7> } plane { z, (.25 - i)*.68 } plane { -z, (.25 + i)*.68 } plane { y, .5 } plane { -y, -.25 } plane { x, -3.8 } plane { -x, 3.82 } texture { DMFWood2 translate 5*y } } #end #local i = -7; #while (i < 5) #local i = i + 2; intersection { sphere { 0, 1 scale <4.5, 2.8, 1.7> } plane { z, (.5 - i)*.3 } plane { -z, (.5 + i)*.3 } plane { y, .5 } plane { -y, -.25 } plane { x, -1 } plane { -x, 1.02 } texture { DMFWood2 translate 5*y } } #end translate .8*y } #declare QuarterdeckRippen = union { intersection { union { intersection { sphere { 0, 1 scale <4.5, 1.4, 1.7> + .025} sphere { 0, 1 scale <4.5, 1.4, 1.7> - .025 inverse } plane { y, 0 } } intersection { sphere { 0, 1 scale <4.5, 2.8, 1.7> + .025 } sphere { 0, 1 scale <4.5, 2.8, 1.7> - .025 inverse } plane { -y, 0 } plane { y, .525 } } } union { #local i = -1; #while (i < 11) #local i = i + 1; intersection { plane { x, -.975 - i/11 * 2.8 } plane { -x, 1.025 + i/11 * 2.8 } } #end } plane { y, 0 rotate 120*z translate -1.6*x + .455*y scale <7.5/2.8, 1.6/.65, 1> translate .0125*x - .8*y } texture { DMFWood4 rotate 90*y scale 30 } } intersection { intersection { sphere { 0, 1 scale <4.5, 2.8, 1.701> + .025 } plane { x, -.975 } plane { -x, 3.825 } } intersection { sphere { 0, 1 scale <4.5, 2.8, 1.701> - .025} plane { x, -1.025 } plane { -x, 3.775 } inverse } union { intersection { plane { y, .025 } plane { -y, .025 } } intersection { plane { y, .275 } plane { -y, -.225 } } } texture { DMFWood4 scale 30 } } intersection { sphere { 0, 1 scale <4.5, .7, 3.401> + .025 } sphere { 0, 1 scale <4.5, .7, 3.401> - .025 inverse } sphere { 0, 1 scale <4.5, 1.4, 1.701> + .025 } sphere { 0, 1 scale <4.5, 1.4, 1.701> - .025 inverse } plane { x, -.975 } plane { -x, 3.825 } plane { y, 0 } texture { DMFWood4 scale 30 } } #local i = -5; #while (i < 3) #local i = i + 2; intersection { plane { z, -i*.68/4 + .025 } plane { -z, i*.68/4 + .025 } plane { y, .525 } plane { -y, 0 } plane { x, -3.75 } plane { -x, 3.85 } texture { DMFWood4 rotate 90*y scale 30 } } #end #local i = -11; #while (i < 9) #local i = i + 2; intersection { plane { z, -i*.3/2 + .025 } plane { -z, i*.3/2 + .025 } plane { y, .525 } plane { -y, 0 } plane { x, -.95 } plane { -x, 1.05 } texture { DMFWood4 rotate 90*y scale 30 } } #end box { <-1.025, -.2, -.225> <-.975, -1, -.175> texture { DMFWood4 rotate 90*y scale 30 } } // Door box { <-1.025, -.2, .225> <-.975, -1, .175> texture { DMFWood4 rotate 90*y scale 30 } } box { <-1.025, -.15, -.225> <-.975, -.2, .225> texture { DMFWood4 scale 30 } } // Leiter opening box { <-2.325, -.025, -.2>, <-2.775, .025, -.15> texture { DMFWood4 rotate -90*y scale 30 } } box { <-2.325, -.025, .2>, <-2.775, .025, .15> texture { DMFWood4 rotate 90*y scale 30 } } box { <-2.325, -.025, -.15>, <-2.375, .025, .15> texture { DMFWood4 scale 30 } } box { <-2.725, -.025, -.15>, <-2.775, .025, .15> texture { DMFWood4 scale 30 } } // Leiter #local i = -3; #while (i < 1) #local i = i + 2; prism { i*.125 - .025, i*.125 + .025, 5, <-2.725, 0>, <-2.775, 0>, <-2.575, -.801>, <-2.525, -.801>, <-2.725, 0> rotate -90*x texture { DMFWood4 rotate 90*y scale 30 } } #end #local i = -1; #while (i < 4) #local i = i + 1; box { <-2.725, -.0125, -.125>, <-2.775, .0125, .125> translate <.04*i, -.16*i, 0> texture { DMFWood4 scale 30 } } #end translate .8*y } #declare Forecastle = union { prism { -.0125, .0125, 5, <.55, -.5>, <.55, .5>, <-.55, 1.2>, <-.55, -1.2>, <.55, -.5> texture { DMFWood2 rotate 90*y scale 3 } } box { <-.55125, 0, -1.2>, <-.54875, .25, 1.2> texture { DMFWood2 translate y } } box { <.55125, 0, -.5>, <.54875, .25, .5> texture { DMFWood2 translate y } } #local i = -3; #while (i < 1) #local i = i + 2; prism { 0, .25, 5, <-.55125, i*1.2>, <.55125, i*.5>, <.54875, i*.5>, <-.54875, i*1.2>, <-.55125, i*1.2> texture { DMFWood2 rotate -i*60*y translate y } } intersection { prism { .25, .5, 5, <-.55125, i*1.2>, <.55125, i*.5>, <.54875, i*.5>, <-.54875, i*1.2>, <-.55125, i*1.2> } box { <.11, .25, -2>, <.33, .55, 2> inverse } box { <-.11, .25, -2>, <-.33, .55, 2> inverse } texture { DMFWood2 rotate 90*x translate x } } #end intersection { union { box { <-.55125, .5, -1.2>, <-.54875, .25, 1.2> } box { <.55125, .5, -.5>, <.54875, .25, .5> } } box { <1, .25, 1/6>, <-1, .55, -1/6> inverse } box { <-.6, .25, 5/6>, <-.5, .55, 3/6> inverse } box { <-.6, .25, -5/6>, <-.5, .55, -3/6> inverse } texture { DMFWood2 rotate 90*x } } translate 3.2*x + .6*y } #declare ForecastleRippen = union { #local i = -1; #while (i < 1) #local i = i + 1; prism { -.025, .025, 10, <.5501, -.5> + .025*(u-v), <.5501, .5> + .025*(u+v), <-.5501, 1.2> + .025*(v-u), <-.5501, -1.2> - .025*(u+v), <.5501, -.5> + .025*(u-v), <.5501, -.5> - .025*(u-v), <.5501, .5> - .025*(u+v), <-.5501, 1.2> - .025*(v-u), <-.5501, -1.2> + .025*(u+v), <.5501, -.5> - .025*(u-v) translate i*.25*y texture { DMFWood4 scale 30 } } #end intersection { prism { -.025, .525, 10, <.55, -.5> + .025*(u-v), <.55, .5> + .025*(u+v), <-.55, 1.2> + .025*(v-u), <-.55, -1.2> - .025*(u+v), <.55, -.5> + .025*(u-v), <.55, -.5> - .025*(u-v), <.55, .5> - .025*(u+v), <-.55, 1.2> - .025*(v-u), <-.55, -1.2> + .025*(u+v), <.55, -.5> - .025*(u-v) } #local i = -2; #while (i < 1) #local i = i + 1; box { <1, -1, (2*i+1)/6 - .0245>, <-1, 1, (2*i-1)/6 + .0245> inverse } #end box { <-.6, -1, -3/6 - .025>, <-.4, 1, -5/6 + .025> inverse } box { <-.6, -1, 5/6 - .025>, <-.4, 1, 3/6 + .025> inverse } box { <-.6, -1, -5/6 - .025>, <-.4, 1, -1.2 + .025> inverse } box { <-.6, -1, 1.2 - .025>, <-.4, 1, 5/6 + .025> inverse } #local i = -3; #while (i < 2) #local i = i + 1; box { <(2*i-1)*.11 + .0245, -1, -2>, <(2*i+1)*.11 - .0245, 1, 2> inverse } #end texture { DMFWood4 rotate 90*y scale 30 } } #local i = -5; #while (i < 3) #local i = i + 2; box { <-.55-.025, -.6, i/6 - .025>, <-.55+.025, 0, i/6 + .025> texture { DMFWood4 rotate 90*y scale 30 } } #end #local i = -1; #while (i < 1) #local i = i + 1; prism { i*.25 - .025, i*.25 + .025, 7, <.55, .2 + i*.2> + .025*(u+v), <1 + i*.25, 0> + .05*u, <.55, -.2 - i*.2> + .025*(u-v), <.55, -.2 - i*.2> - .025*(u-v), <1 + i*.25, 0> - .05*u, <.55, .2 + i*.2> - .025*(u+v), <.55, .2 + i*.2> + .025*(u+v) texture { DMFWood4 scale 30 translate 2*y } } #end #local i = -3; #while (i < 1) #local i = i + 2; box { <-.025, -.6, i/3 - .025>, <.025, 0, i/3 + .025> texture { DMFWood4 scale 30 } } intersection { prism { -1, 1, 5, <.5499, .5> + .025*(u+v), <.5499, -.5> + .025*(u-v), <-.5499, -1.2> - .025*(u+v), <-.5499, 1.2> + .025*(v-u), <.5499, .5> + .025*(u+v) } union { box { <-.025, 0, 2>, <.025, -.025, -2> } #local j = -1; #while (j < 1) #local j = j + 1; box { <1, 0, (2*j+1)/3 + .025>, <-1, -.025, (2*j+1)/3 - .025> } prism { j*.55 - .025, j*.55 + .025, 5, <0, i*(.875 + j*.35)>, <0, i*(.825 + j*.35)>, <-.375, i*(2+j)/6 + .025>, <-.425, i*(2+j)/6 + .025>, <0, i*(.875 + j*.35)> rotate 90*z } prism { i/3 - .025, i/3 + .025, 5, <0, -.425>, <(2*j-1)*.575, 0>, <(2*j-1)*.525, 0>, <0, -.375>, <0, -.425> rotate -90*x } #end } texture { DMFWood4 scale 30 translate 2*y } } // Leiter prism { -i/6 - .025, -i/6 + .025, 5, <-.525, 0>, <-.575, 0>, <-.775, -.601>, <-.725, -.601>, <-.525, 0> rotate -90*x texture { DMFWood4 scale 30 translate 2*y } } #end #local i = -1; #while (i < 3) #local i = i + 1; box { <-.575, -.0125, -1/6>, <-.525, .0125, 1/6> translate <-.04*i, -.16*i, 0> texture { DMFWood4 rotate 90*y scale 30 } } #end translate 3.2*x + .6*y } #declare Beschlaege = union { intersection { union { intersection { object { RumpfBasis scale <7.5/2.8, 1.6/.65, 3/1.53> } object { RumpfBasis scale .9*<7.5/2.8, 1.6/.65, 3/1.53> inverse } plane { -z, 0 } } intersection { object { RumpfBasisSpiegel scale <7.5/2.8, 1.6/.65, 3/1.53> } object { RumpfBasisSpiegel scale .9*<7.5/2.8, 1.6/.65, 3/1.53> inverse } plane { z, 0 } } } plane { y, .1625 } plane { -y, -.1375 } plane { x, 0 } plane { -x, .8 } } cylinder { <-.8, 0, 1.4>, <-.8, .4, 1.4>, .0125 } cylinder { <-.8, 0, -1.4>, <-.8, .4, -1.4>, .0125 } texture { DMFWood2 rotate 90*y scale 3 } } #declare Ruder = intersection { union { sphere { 0, 1 } sphere { 0, 1 translate 6*y } sphere { 0, 1 translate 14*y - x } cylinder { 0, 6*y, 1 } cylinder { -x, 14*y - x, 1 } cylinder { 0, -2*x, 1 } cylinder { 6*y, 7*y - x, 1 } cylinder { 14*y - x, 14*y - 2*x, 1 } box { z, <-1, 6, -1> } box { z-x, <-2, 14, -1> } rotate 180*y translate y scale <.35/3, 1.6/16, .05/2> translate -1.3*y matrix <1,0,0,-.55,1,0,0,0,1,0,0,0> translate -3.75*x } plane { -y, 0 rotate 120*z translate -1.6*x + .455*y scale <7.5/2.8, 1.6/.65, 1> translate -.025*x } texture { DMFWood2 rotate 90*y rotate 120*z scale 2 } } #declare RuderBeschlag = union { box { <-3, -.25, -1.025> <0, .25, 1.025> } box { <-3, -.25, -1.025> <0, .25, 1.025> translate 3*y } box { <-3, -.25, -1.025> <0, .25, 1.025> translate 6*y } box { <-3, -.25, -1.025> <0, .25, 1.025> translate 9*y - x } box { <-3, -.25, -1.025> <0, .25, 1.025> translate 12*y - x } cylinder { -.25*y, .25*y, 1.025 } cylinder { -.25*y, .25*y, 1.025 translate 3*y } cylinder { -.25*y, .25*y, 1.025 translate 6*y } cylinder { -.25*y, .25*y, 1.025 translate 9*y - x } cylinder { -.25*y, .25*y, 1.025 translate 12*y - x } rotate 180*y translate y scale <.35/3, 1.6/16, .05/2> translate -1.3*y matrix <1,0,0,-.55,1,0,0,0,1,0,0,0> translate -3.75*x texture { DMFWood4 rotate 80*y translate -y } } #declare ForecastleCover = intersection { cone { -.55*x, 1.2, .55*x, .5 scale 1 - .25*y } plane { y, 0 } translate 3.2*x + .6*y texture { DMFWood2 rotate 90*y scale 2 translate -5*y } } #declare ForecastleCoverRippen = intersection { union { #local i = -7; #while (i < 5) #local i = i + 2; intersection { plane { x, .025 + i*.11 } plane { -x, .025 - i*.11 } } #end } cone { -.55*x, 1.2, .55*x, .5 scale 1.025 - .25*y } cone { -1.1*x, 1.55, 1.1*x, .15 scale .975 - .25*y inverse } plane { y, 0 } translate 3.2*x + .6*y texture { DMFWood4 rotate 90*y scale 30 } } #declare Mast = union { cylinder { -.1*y, 6.4*y, .05} sphere { 0, .05 scale 1 - .5*y translate 6.4*y } translate .3*x texture { DMFWood2 rotate 90*x } } #declare Baum = union { cylinder { -2.35*z, 2.35*z, .025 translate .075*x } sphere { 0, .025 scale 1 - .5*x translate <.075, 0, 2.35> } sphere { 0, .025 scale 1 - .5*x translate <.075, 0, -2.35> } translate 4.4*y texture { DMFWood2 } rotate BeamAngle*180/pi*y translate .3*x } #macro Belege(a) union { #local i = -2; #while (i < 1) #local i = i + 1; torus { a .0075 translate i*.015*y pigment { radial frequency 10 color_map { [0.2 color DarkTan] [.5 color Gray35] [1 color DarkTan] } } } #end } #end #declare Falle = union { object { Belege(.05) translate 4.4*y } object { Belege(.025) rotate 90*x translate 4.4*y + .075*x rotate BeamAngle*180/pi*y } translate .3*x } #declare Stag = union { object { Belege(.05) translate 5.75*y + .3*x } cylinder { <.3, 5.8, 0>, <4.325, .75, 0>, .0075 texture { T_Rope rotate atan(4/5)/pi*180*z translate <.3, 5.8, 0> } } object { Belege(.07) rotate -35*z translate .75*y + 4.3375*x } } #declare Segel = isosurface { function { // Constraints: f({y=0}) => x=0, f({y=-3.8}) => x=0 pow(y + 1.9, 2)/pow(1.9, 2) + pow(x+1, 2)/pow(1, 2) - 2 +sin(y/3.8*pi)*f_noise3d(x,y,z)/2 } open max_gradient 5 contained_by { box { <0, 0, -2.2>, <2, -3.8, 2.2> } } rotate BeamAngle*180/pi*y translate .075* + 4.4*y + .3*x texture { pigment { Tan } finish { ambient .4 diffuse .65 } } } #declare SegelBelege = union { #local i = -9; #while (i < 8) #local i = i + 1; object { Belege(.025) rotate 90*x translate i*2.2/8*z } #end rotate BeamAngle*180/pi*y translate .075* + 4.4*y + .3*x } #declare MyCyl = cylinder { 0, .02*y, .05 texture { T_Rope scale 4 } } #macro Seil1(a,b,c,d) // p1, first weight, p2, p3 #local p = a*b + c*(1-b)/2 + d*(1-b)/2; union { #local u1 = (a-p)/vlength(a-p); #local u2 = vcross(c-p, d-p)/vlength(vcross(c-p, d-p)); #local u3 = vcross(u1, u2); cylinder { a, p, .0075 texture { T_Rope Point_At_Trans(a-p) } } cylinder { p - u3*.015, c, .0075 texture { T_Rope Point_At_Trans(p - u3*.015-c) } } cylinder { p + u3*.015, d, .0075 texture { T_Rope Point_At_Trans(p + u3*.015-d) } } cylinder { -y, y, 1 scale <.06, .01, .03> texture { DMFWood4 scale 10} Shear_Trans(u1, u2, u3) translate p } } #end #macro Seil2(a,b,c,d,e) // add ratio hang/length (a-c) #local p = a*b + c*(1-b)/2 + d*(1-b)/2; #local h = e*vlength(c-a); union { #local u1 = (a-p)/vlength(a-p); #local u2 = vcross(c-p, d-p)/vlength(vcross(c-p, d-p)); #local u3 = vcross(u1, u2); union { #local i = -1; #while (i < 1 - 2*b) #local i = i + .01*vlength(p - a); #local xx = a + (i + 1)/(2 - 2*b)*(p - a); #local yy = h*(i - 1)*(i + 1)*y; cylinder { 0, .02*vlength(p-a)*y, .0075 texture { T_Rope } rotate -1600*i*y*vlength(p - a) Point_At_Trans(h*2*i*y + (p - a)/(2 - 2*b)) translate xx + yy } #end } union { #local i = -1; #while (i < 2*b - 1) #local i = i + .01*vlength(p - u3*.015 - c); #local xx = c + (i + 1)/(2*b)*(p - u3*.015 - c); #local yy = h*(i - 1)*(i + 1)*y; cylinder { 0, .02*vlength(p - u3*.015 - c)*y, .0075 texture { T_Rope } rotate -1600*i*y*vlength(p - u3*.015 - c) Point_At_Trans(h*2*i*y + (p - u3*.015 - c)/(2*b)) translate xx + yy } #end } union { #local i = -1; #while (i < 2*b - 1) #local i = i + .01*vlength(p + u3*.015 - d); #local xx = d + (i + 1)/(2*b)*(p + u3*.015 - d); #local yy = h*(i - 1)*(i + 1)*y; cylinder { 0, .02*vlength(p + u3*.015 - d)*y, .0075 texture { T_Rope } rotate 1600*i*y*vlength(p + u3*.015 - d) Point_At_Trans(h*2*i*y + (p + u3*.015 - d)/(2*b)) translate xx + yy } #end } cylinder { -y, y, 1 scale <.06, .01, .03> texture { DMFWood4 scale 10} rotate 90*z Point_At_Trans(h*2*i*y + (p - a)/(2 - 2*b)) translate p + 4*h*(b-1)*b*y } } #end #declare Brassen = union { #local cba = cos(BeamAngle); #local sba = sin(BeamAngle); Seil1(<2.2*sba + .075*cba, 4.4, 2.2*cba - .075*sba> + .3*x, .75, <-3.75, .795, .5>, <-3.75, .795, .75>) Seil1(<-2.2*sba + .075*cba, 4.4, -2.2*cba - .075*sba> + .3*x, .75, <-3.75, .795, -.5>, <-3.75, .795, -.75>) } #declare Wanten = union { #local i = 0; #while (i < 4) #local i = i + 1; object { Belege(.05) translate (5 + .1*i)*y + .3*x } Seil1(<.3, 5 + .1*i, .05>, .3, <-.2*i + .15, .15, 1.4>, <-.2*i + .05, .15, 1.4>) Seil1(<.3, 5 + .1*i, -.05>, .3, <-.2*i + .15, .15, -1.4>, <-.2*i + .05, .15, -1.4>) #end } #declare Schoten = union { #local cba = cos(BeamAngle); #local sba = sin(BeamAngle); Seil1(<2.2*sba + .075*cba, .6, 2.2*cba - .075*sba> + .3*x, .75, <-.8, .25, 1.4>, <-.8, .35, 1.4>) Seil1(<-2.2*sba + .075*cba, .6, -2.2*cba - .075*sba> + .3*x .75, <-.8, .25, -1.4>, <-.8, .35, -1.4>) object { Belege(.0125) translate <-.8, .25, 1.4> } object { Belege(.0125) translate <-.8, .35, 1.4> } object { Belege(.0125) translate <-.8, .25, -1.4> } object { Belege(.0125) translate <-.8, .35, -1.4> } } #declare Dak = union { object { Rumpf } object { Deck } object { Reling } object { Kiel } object { Lukenrahmen } object { Luke } object { Quarterdeck } object { QuarterdeckRippen } object { Forecastle } object { ForecastleCover } object { ForecastleRippen } object { ForecastleCoverRippen } object { Beschlaege } object { Ruder } object { RuderBeschlag } object { Mast } object { Baum } object { Falle } object { Stag } object { Segel } object { SegelBelege } object { Brassen } object { Wanten } object { Schoten } }