edge = 10; height = 40; mink=.9; eps=1e-3; module strahl(edge=10, height = 50, drill=5, mink=.9) { outer_r = edge/(2*sin(36)); intersection() { difference() { minkowski() { cylinder(r1=outer_r, r2=0, h=height, $fn=5); sphere(r=mink/2, $fn=16); } cylinder(r1=outer_r, r2=0, h=height, $fn=5); } translate([0,0,eps]) cylinder(r=1.2*outer_r, h=1.2*height, $fn=5); } difference() { cylinder(r=outer_r, h=mink, $fn=5); translate([0,0,-eps]) cylinder(r=drill/2,h=2*mink,$fn=60); } } module stern(edge=10, height=50) { inner_sphere_r = 0.5*edge*sqrt(5/2 + 11/10*sqrt(5)); union() { for (a=[0,120,240]) { rotate([0,0,a]) rotate([0,52.5,0]) translate([inner_sphere_r, 0, 0]) rotate([0,90,0]) strahl(edge=edge, height=height); rotate([0,0,a]) rotate([0,-11.2,0]) translate([inner_sphere_r, 0, 0]) rotate([0,90,0]) rotate([0,0,36]) strahl(edge=edge, height=height); } for (a=[0,120,240]) { rotate([0,0,a+60]) rotate([0,-52.5,0]) translate([inner_sphere_r, 0, 0]) rotate([0,90,0]) rotate([0,0,36]) strahl(edge=edge, height=height); rotate([0,0,a+60]) rotate([0,11.2,0]) translate([inner_sphere_r, 0, 0]) rotate([0,90,0]) strahl(edge=edge, height=height); } } } module face(edge=10, thickness=1, width=3) { inner_sphere_r = 0.5*edge*sqrt(5/2 + 11/10*sqrt(5)); outer_r = edge/(2*sin(36)); difference() { cylinder(r1=0, r2=outer_r, h=inner_sphere_r, $fn=5); union() { cylinder(r=2*outer_r, h=inner_sphere_r-thickness,$fn=5); translate([0,0,eps]) cylinder(r=outer_r-width, h=2*inner_sphere_r,$fn=5); } } } module base(edge=10, thickness=1, width=2) { inner_sphere_r = 0.5*edge*sqrt(5/2 + 11/10*sqrt(5)); outer_r = edge/(2*sin(36)); face(edge=edge+0.1, thickness=thickness, width=width); for (a=[0,1,2,3,4]) { rotate([0,0,72*a]) rotate([0,-63.5,0]) rotate([0,0,180]) face(edge=edge+0.1, thickness=thickness, width=width); rotate([0,0,72*a]) rotate([0,180-63.5,0]) rotate([0,0,180]) face(edge=edge+0.1, thickness=thickness, width=width); } rotate([180,0,0]) rotate([0,0,36]) face(edge=edge+0.1, thickness=thickness, width=width); } strahl(edge=15, height = 70, drill=10); //base(edge=17, thickness=1, width=5);