Shuttlecock
/* Shuttlecock
* James Kermode October 1999
* Scale: 1 unit = 1 cm
*/
#include "colors.inc"
#declare Ball = texture { pigment { White } normal { dents 1 scale 0.1 }}
#declare Feather = texture { pigment { White } finish { specular 0.5 roughness 0.001 } }
background { color White }
camera
{
location <0,10,-10>
look_at <0,3,0>
}
light_source
{
<0,10,-10>
color White
}
#declare ShuttleCock = union
{
union
{
sphere { <0,0,0>,1.25 texture { Ball }}
cylinder { <0,0,0>,<0,1,0>,1.25 texture { Ball } }
cylinder { <0,0.7,0>,<0,0.77,0>,1.26 pigment { Blue } }
clipped_by { plane { y,1 } }
}
#declare NumFeathers = 16;
#declare Count = 0;
#while (Count < NumFeathers)
#declare ThisRotation = y*(Count/NumFeathers)*360;
#declare MiddleRotation = y*((Count+0.7)/NumFeathers)*360;
#declare NextRotation = y*((Count+1)/NumFeathers)*360;
cone
{
vrotate(<1,1.25,0>,ThisRotation),0.07,
vrotate(<3,7,0>,ThisRotation),0.03
texture { Feather }
}
union
{
triangle { vrotate(<1.5,3,0>,ThisRotation),
vrotate(<2.7,6.7,0>,MiddleRotation),
vrotate(<1.5,3,0>,MiddleRotation) }
triangle { vrotate(<1.5,3,0>,ThisRotation),
vrotate(<2.7,6.7,0>,MiddleRotation),
vrotate(<3,7,0>,ThisRotation) }
triangle { vrotate(<1.5,3,0>,NextRotation),
vrotate(<2.7,6.7,0>,MiddleRotation),
vrotate(<3,7,0>,NextRotation) }
triangle { vrotate(<1.5,3,0>,NextRotation),
vrotate(<2.7,6.7,0>,MiddleRotation),
vrotate(<1.5,3,0>,MiddleRotation) }
texture
{
checker texture {Feather}, texture {pigment {White filter 1}}
scale 0.1
}
}
#declare Count = Count + 1;
#end
torus
{
1.5,0.04
texture { Feather }
translate y*3
}
torus
{
1.2,0.04
texture { Feather }
translate y*2
}
cylinder
{
<0,1,0>,<0,1.1,0>,1
texture { Feather finish { specular 1 roughness 0.001 } }
}
}
object { ShuttleCock }