// rounded tetrahedron macro include file
// Bill Pragnell 2006
#macro RoundedTetra(a, b)
#local f_f = degrees(acos(tan(radians(30))*tan(radians(30))));
#local f_e = (180-f_f)/2;
#local r = a*sin(radians(f_f/2));
#local rb = r + b;
#local a2 = (r+b) / sin(radians(f_f/2));
#local a_edge = a + b*cos(radians((180-f_f)/2));
#local a_vert = 2*(sqrt(3*a*a) + b*cos(radians((180-f_e)/2)));
union {
sphere { <-a, a, a>, b }
sphere { , b }
sphere { , b }
sphere { <-a, -a, -a>, b }
cylinder { <-a, a, a>, , b }
cylinder { , <-a, -a, -a>, b }
cylinder { , <-a, -a, -a>, b }
cylinder { , , b }
cylinder { <-a, a, a>, , b }
cylinder { <-a, a, a>, <-a, -a, -a>, b }
intersection {
// major faces
plane { <1, 1, 1>, rb }
plane { <-1, 1, -1>, rb }
plane { <1, -1, -1>, rb }
plane { <-1, -1, 1>, rb }
// edge bevels
plane { <0, 1, 0>, a_edge }
plane { <0, -1, 0>, a_edge }
plane { <-1, 0, 0>, a_edge }
plane { <1, 0, 0>, a_edge }
plane { <0, 0, 1>, a_edge }
plane { <0, 0, -1>, a_edge }
// vertex bevels
plane { <-1, 1, 1>, a_vert }
plane { <1, 1, -1>, a_vert }
plane { <-1, -1, -1>, a_vert }
plane { <1, -1, 1>, a_vert } }
pigment { color White } }
#end