These are lego pieces I put together to expand the Anton Raves Lego Library.
#macro arrow(color_tex)
#if (setting = 0)
merge {
cylinder { -8*z, 11*z, 0.6 }
sphere { 11*z, 0.6 }
texture { color_tex }
}
#else
merge {
cylinder { -8*z, 11*z, 0.6 } // shaft
sphere { -8*z, 0.6 }
sphere { 11*z, 0.6 }
prism { quadratic_spline 0, 0.6, 5,
<2,-7>, <-2,-7>, <0,-11>, <2,-7>, <-2,-7> translate <0,-0.3,0> } // head
cylinder { <0,0,5.4>, <2,0,7.4>, 0.4 } // fletching
sphere { <2,0,7.4>, 0.4 }
cylinder { <0,0,5.4>, <-2,0,7.4>, 0.4 }
sphere { <-2,0,7.4>, 0.4 }
cylinder { <0,0,6.4>, <2,0,8.4>, 0.4 }
sphere { <2,0,8.4>, 0.4 }
cylinder { <0,0,6.4>, <-2,0,8.4>, 0.4 }
sphere { <-2,0,8.4>, 0.4 }
cylinder { <0,0,7.4>, <2,0,9.4>, 0.4 }
sphere { <2,0,9.4>, 0.4 }
cylinder { <0,0,7.4>, <-2,0,9.4>, 0.4 }
sphere { <-2,0,9.4>, 0.4 }
cylinder { <0,0,8.4>, <1.6,0,10>, 0.4 }
sphere { <1.6,0,10>, 0.4 }
cylinder { <0,0,8.4>, <-1.6,0,10>, 0.4 }
sphere { <-1.6,0,10>, 0.4 }
texture { color_tex }
}
#end
#end
#macro bow(color_tex)
#local hand_placement = <0, -0.8, -3>;
#if (setting = 0)
merge {
cylinder { -8.5*y, 8.5*y, 1.4 }
sphere_sweep { cubic_spline, 7, <0,-8.5,0>, 1.25, <0,8.5,0>, 1.25,
<0,17,2>, 1, <0,20.8,4>, .9, <0,23.3,6>, .8, <0,26,9>, .6, <0,26.5,10>, .6 }
sphere_sweep { cubic_spline, 7, <0,8.5,0>, 1.25, <0,-8.5,0>, 1.25,
<0,-17,2>, 1, <0,-20.8,4>, .9, <0,-23.3,6>, .8, <0,-26,9>, .6, <0,-26.5,10>, .6 }
cylinder { <0,0,11>, <0,25,8>, .5 }
cylinder { <0,0,11>, <0,-25,8>, .5 }
cylinder { 11*z, 15*z, 0.6 }
sphere { 15*z, 0.6 }
object { arrow(color_tex) rotate 90*z translate <0,0,0> }
texture { color_tex }
}
#else
merge {
cylinder { -8.5*y, 8.5*y, 1.4 } // Handgrip
sphere_sweep { cubic_spline, 7, <0,-8.5,0>, 1.25, <0,8.5,0>, 1.25,
<0,17,2>, 1, <0,20.8,4>, .9, <0,23.3,6>, .8, <0,26,9>, .6, <0,26.5,10>, .6 }
sphere_sweep { cubic_spline, 7, <0,8.5,0>, 1.25, <0,-8.5,0>, 1.25,
<0,-17,2>, 1, <0,-20.8,4>, .9, <0,-23.3,6>, .8, <0,-26,9>, .6, <0,-26.5,10>, .6 }
cylinder { <0,0,11>, <0,25,8>, .5 } // bowstring
cylinder { <0,0,11>, <0,-25,8>, .5 }
cylinder { 11*z, 15*z, 0.6 } // arrow tail
sphere { 15*z, 0.6 }
object { arrow(color_tex) rotate 90*z translate <0,0,0> }
#if (setting > 1)
union { // hand grip
torus { 1.4, 0.1 scale <1,3,1> translate <0,7.5,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,6,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,4.5,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,3,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,1.5,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,0,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,-1.5,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,-3,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,-4.5,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,-6,0> }
torus { 1.4, 0.1 scale <1,3,1> translate <0,-7.5,0> }
}
#end
texture { color_tex }
}
#end
#end
#macro harness(color_tex)
#if (setting = 0)
merge {
object{ f_block2_2(color_tex) translate <0,0,0> }
object{ f_block1_2(color_tex,1) translate <0,6.4,40> }
cylinder{ <-5.5,1.6,4>, <-5.5,1.6,12>, 1.5 }
cylinder{ <13.5,1.6,4>, <13.5,1.6,12>, 1.5 }
cylinder{ <-5.5,1.6,12>, <-5.5,8,36>, 1.5 }
cylinder{ <13.5,1.6,12>, <13.5,8,36>, 1.5 }
cylinder{ <-5.5,8,36>, <-5.5,8,52>, 1.5 }
cylinder{ <13.5,8,36>, <13.5,8,52>, 1.5 }
}
#else
merge {
object{ f_block2_2(color_tex) translate <0,0,0> }
object{ f_block1_2(color_tex,1) translate <0,6.4,40> }
cylinder{ <-5.5,1.6,4>, <-5.5,1.6,12>, 1.5 }
cylinder{ <13.5,1.6,4>, <13.5,1.6,12>, 1.5 }
cylinder{ <-5.5,1.6,12>, <-5.5,8,36>, 1.5 }
cylinder{ <13.5,1.6,12>, <13.5,8,36>, 1.5 }
cylinder{ <-5.5,8,36>, <-5.5,8,52>, 1.5 }
cylinder{ <13.5,8,36>, <13.5,8,52>, 1.5 }
#if (setting > 1)
box{ <-4.5,1.1,4.2>,<12.5,2.1,11.8> }
box{ <-4.5,7.5,36.2>,<12.5,8.5,43.8> }
#end
texture { color_tex }
}
#end
#end
#macro quiver(color_tex)
#if (setting = 0)
merge {
box { <-2.5,-9.5,0>, <2.5,9.5,2.5> rotate 45*z translate <0, -9.5, 10> }
texture { color_tex }
}
#else
merge {
difference { // neck straps
merge {
cylinder { 0.000001*y, 0.999999*y, 4 }
box { <-4,0.000001,0>, <4,0.999999,4.999999> }
}
cylinder { 0*y, 1*y, 2 }
}
difference { // back straps
box { <-3.4,-3.5,0.000001>, <3.8,4.5,1> rotate -30*z translate <-1, -1, 4> }
box { <-4.5,0.99999,3>, <4.5,6,6> }
box { <4,1,3>, <5,-1,6> }
}
box { <-2.5,-9.5,0>, <2.5,9.5,2.5> rotate 45*z translate <-2, -6.5, 4> } // quiver case
difference {
merge { // arrows
object { arrow(color_tex) rotate <-90,0,45> translate <-4.5, -3, 5.5> }
object { arrow(color_tex) rotate <-90,0,45> translate <-5.5, -4, 5.5> }
}
// trim off everything we don't need; arrowheads stick out otherwise
box { <-10, -2.75, 6.5>, <5.75, -10.75, 4> }
}
#if (setting > 1)
// the casing straps
cylinder { <-5.75, 0.75, 4>, <-5.75, 0.75, 6.5>, 0.1 }
cylinder { <-5, 0, 4>, <-5, 0, 6.5>, 0.10 }
cylinder { <-0.75, -4.25, 4>, <-0.75, -4.25, 6.5>, 0.1 }
cylinder { <0, -5, 4>, <0, -5, 6.5>, 0.10 }
cylinder { <0.75, -5.75, 4>, <0.75, -5.75, 6.5>, 0.1 }
cylinder { <5, -10, 4>, <5, -10, 6.5>, 0.1 }
cylinder { <5.75, -10.75, 4>, <5.75, -10.75, 6.5>, 0.1 }
cylinder { <-9.25, -2.75, 4>, <-9.25, -2.75, 6.5>, 0.1 }
cylinder { <-8.5, -3.5, 4>, <-8.5, -3.5, 6.5>, 0.1 }
cylinder { <-4.25, -7.75, 4>, <-4.25, -7.75, 6.5>, 0.1 }
cylinder { <-3.5, -8.5, 4>, <-3.5, -8.5, 6.5>, 0.1 }
cylinder { <-2.75, -9.25, 4>, <-2.75, -9.25, 6.5>, 0.1 }
cylinder { <1.5, -13.5, 4>, <1.5, -13.5, 6.5>, 0.1 }
cylinder { <2.25, -14.25, 4>, <2.25, -14.25, 6.5>, 0.1 }
cylinder { <-5.75, 0.75, 6.5>, <-9.25, -2.75, 6.5>, 0.1 }
cylinder { <-0.75, -4.25, 6.5>, <-8.5, -3.5, 6.5>, 0.1 }
cylinder { <-5, 0, 6.5>, <-4.25, -7.75, 6.5>, 0.1 }
cylinder { <0, -5, 6.5>, <-3.5, -8.5, 6.5>, 0.1 }
cylinder { <5, -10, 6.5>, <-2.75, -9.25, 6.5>, 0.1 }
cylinder { <0.75, -5.75, 6.5>, <1.5, -13.5, 6.5>, 0.1 }
cylinder { <5.75, -10.75, 6.5>, <2.25, -14.25, 6.5>, 0.1 }
sphere { <-5.75, 0.75, 6.5>, 0.1 }
sphere { <-5, 0, 6.5>, 0.1 }
sphere { <-0.75, -4.25, 6.5>, 0.1 }
sphere { <0, -5, 6.5>, 0.1 }
sphere { <0.75, -5.75, 6.5>, 0.1 }
sphere { <5, -10, 6.5>, 0.1 }
sphere { <5.75, -10.75, 6.5>, 0.1 }
sphere { <-9.25, -2.75, 6.5>, 0.1 }
sphere { <-8.5, -3.5, 6.5>, 0.1 }
sphere { <-4.25, -7.75, 6.5>, 0.1 }
sphere { <-3.5, -8.5, 6.5>, 0.1 }
sphere { <-2.75, -9.25, 6.5>, 0.1 }
sphere { <1.5, -13.5, 6.5>, 0.1 }
sphere { <2.25, -14.25, 6.5>, 0.1 }
#end
texture { color_tex }
}
#end
#end