// 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