diff options
Diffstat (limited to 'lib/dice.scad')
-rw-r--r-- | lib/dice.scad | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/dice.scad b/lib/dice.scad index ed63d3f..76b6d63 100644 --- a/lib/dice.scad +++ b/lib/dice.scad @@ -42,3 +42,30 @@ module d6(size=false, side=false) { } } +module d8(size=false, side=false) { + l = side ? side : s2s_d8(size); + if (l == false) { + echo("ERROR: d6: one of side or size should be defined"); + } + r = sqrt(2)/2*l; + c = r*2; + i_r = sqrt(6)/6*l; + difference() { + intersection() { + #sphere(r); + cube([c, c, i_r*2], center=true); + intersection_for ( i = [0:2] ) { + + rotate([0, 0, 120*i]) rotate([acos(-1/3), 0, 0]) cube([c, c, i_r*2], center=true); + } + } + translate([0, 0, i_r]) child(0); + rotate([acos(-1/3), 0, 0]) translate([0, 0, i_r]) child(1); + rotate([0, 0, 120]) rotate([acos(-1/3)+180, 0, 0]) translate([0, 0, i_r]) child(2); + rotate([0, 0, -120]) rotate([acos(-1/3)+180, 0, 0]) translate([0, 0, i_r]) child(3); + rotate([0, 0, -120]) rotate([acos(-1/3), 0, 0]) translate([0, 0, i_r]) child(4); + rotate([0, 0, 120]) rotate([acos(-1/3), 0, 0]) translate([0, 0, i_r]) child(5); + rotate([acos(-1/3)+180, 0, 0]) translate([0, 0, i_r]) child(6); + rotate([180, 0, 0]) translate([0, 0, i_r]) child(0); + } +} |