diff options
| -rw-r--r-- | designs/free_mono_d10.scad | 23 | ||||
| -rw-r--r-- | lib/dice.scad | 37 | ||||
| -rw-r--r-- | lib/utils.scad | 2 |
3 files changed, 61 insertions, 1 deletions
diff --git a/designs/free_mono_d10.scad b/designs/free_mono_d10.scad new file mode 100644 index 0000000..7e3b3a3 --- /dev/null +++ b/designs/free_mono_d10.scad @@ -0,0 +1,23 @@ +use <../lib/dice.scad> +use <../lib/utils.scad> +use <../lib/faces/digits.scad> + +size = 14; + +side = s2s_d10(size); + +difference() { + d10(size); + pentagonal_trapezohedron_faces(r=size) { + digits(side, 0, "free_mono"); + digits(side, 1, "free_mono"); + digits(side, 2, "free_mono"); + digits(side, 3, "free_mono"); + digits(side, 4, "free_mono"); + digits(side, 5, "free_mono"); + digits(side, 6, "free_mono"); + digits(side, 7, "free_mono"); + digits(side, 8, "free_mono"); + digits(side, 9, "free_mono"); + } +} diff --git a/lib/dice.scad b/lib/dice.scad index fedc2ed..7ce7c7f 100644 --- a/lib/dice.scad +++ b/lib/dice.scad @@ -98,6 +98,43 @@ module d8(size=false, side=false) { } } +// inscribed in a sphere of radius r +module pentagonal_trapezohedron(r) { + c = r*2; + i_r = r * 0.70; + intersection() { + //cube([c, c, i_r*2], center=true); + sphere(r=r); + intersection_for ( i = [0:5] ) { + rotate([0, 0, 72*i]) rotate([0, 48, 0]) cube([c, c, i_r*2], center=true); + } + } +} + +module pentagonal_trapezohedron_faces(r, sc_face=0.6) { + i_r = r * 0.85; + union() { + for ( i = [0:4] ) { + rotate([0, 0, 72*i]) translate([i_r * 0.6, 0, i_r * 0.3]) rotate([48, 0, 90]) scale([sc_face, sc_face, 1]) children(i * 2); + rotate([180, 0, 72*i + 180]) translate([i_r * 0.6, 0, i_r * 0.3]) rotate([48, 0, 90]) scale([sc_face, sc_face, 1]) children(10 - i * 2 - 1); + } + } +} + +module d10(size=false, side=false) { + l = side ? side : s2s_d10(size); + if (l == false) { + echo("ERROR: d10: one of side or size should be defined"); + } + r = sqrt(6)/4*l; + difference() { + intersection() { + sphere(r=r*0.98, $fn=64); + pentagonal_trapezohedron(r); + } + } +} + // Dodecahedron inscribed in a sphere of radius r module dodecahedron(r) { c = r*2; diff --git a/lib/utils.scad b/lib/utils.scad index 5bc2a15..46d602e 100644 --- a/lib/utils.scad +++ b/lib/utils.scad @@ -14,6 +14,7 @@ function circ_rad(size) = size * sqrt(3) / 2; function s2s_d4(size) = size * 1.57; function s2s_d6(size) = size; function s2s_d8(size) = size * 1.21; +function s2s_d10(size) = size * 1.27; function s2s_d12(size) = size * 0.50; function s2s_d20(size) = size * 0.86; @@ -24,4 +25,3 @@ function s2s_d20(size) = size * 0.86; //function s2s_d8(size) = size * 1.16; //function s2s_d12(size) = size * 0.69; //function s2s_d20(size) = size * 0.78; - |
