module pie_slice(radius, start_angle, end_angle) { R = radius * sqrt(2) + 1; a0 = (4 * start_angle + 0 * end_angle) / 4; a1 = (3 * start_angle + 1 * end_angle) / 4; a2 = (2 * start_angle + 2 * end_angle) / 4; a3 = (1 * start_angle + 3 * end_angle) / 4; a4 = (0 * start_angle + 4 * end_angle) / 4; m = 2; if(end_angle > start_angle) { intersection() { circle(r=radius); polygon([ [0,0], [R * m * cos(a0), R * m * sin(a0)], [R * m * cos(a1), R * m * sin(a1)], [R * m * cos(a2), R * m * sin(a2)], [R * m * cos(a3), R * m * sin(a3)], [R * m * cos(a4), R * m * sin(a4)], [0,0] ]); } } else { pie_slice(radius, end_angle, start_angle); } }