module Tetrahedon(side=5) { h = (side/4)*sqrt(6); linear_extrude(height=h,scale=0) translate([-side/2,-(sqrt(3)/6)*side,0]) polygon([ [0,0], [side,0], [side/2,sqrt(pow(side,2)-pow(side/2,2))], [0,0] ]); } module Icosahedron_side(side=5){ translate([side/2,(sqrt(3)/6)*side,0]) difference(){ Tetrahedon(side); translate([0,0,side/2]) cube([side+1,side+1,side-2],center=true); } } module Icosahedron(side=5) { translate([-2.75*side,-sqrt(pow(side,2)-pow(side/2,2))/2,0]) union(){ for(a=[0:4]){ translate([a*side,0,0]) Icosahedron_side(side); translate([a*side+3/2*side,sqrt(pow(side,2)-pow(side/2,2)),0]) rotate([0,0,180]) Icosahedron_side(side); translate([a*side+1/2*side,sqrt(pow(side,2)-pow(side/2,2)),0]) Icosahedron_side(side); translate([(1+a)*side,0,0]) rotate([0,0,180]) Icosahedron_side(side); } } } module Icosahedron_map(side=10){ textsize=(sqrt(3)/6)*side; textdepth=.3; fontstring="Liberation Sans"; xoff=1/4*(sqrt(3)*side - side); difference(){ Icosahedron(side); translate([-2.25*side,-xoff,.3]) rotate([180,0,180]) linear_extrude(height=.3) text(text="1",size=textsize,font=fontstring,halign="center",valign="center"); translate([.75*side,-xoff,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="2",size=textsize,font=fontstring,halign="center",valign="center"); translate([-1.75*side,2/3*side,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="3",size=textsize,font=fontstring,halign="center",valign="center"); translate([-.25*side,-2/3*side,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="4",size=textsize,font=fontstring,halign="center",valign="center"); translate([1.75*side,-2/3*side,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="5",size=textsize,font=fontstring,halign="center",valign="center"); translate([-.75*side,xoff,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="6",size=textsize,font=fontstring,halign="center",valign="center"); translate([-.75*side,1.75*xoff,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="_",size=textsize,font=fontstring,halign="center",valign="center"); translate([2.25*side,xoff,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="7",size=textsize,font=fontstring,halign="center",valign="center"); translate([.25*side,2/3*side,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="8",size=textsize,font=fontstring,halign="center",valign="center"); translate([-1.25*side,-xoff,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="9",size=textsize,font=fontstring,halign="center",valign="center"); translate([-1.25*side,-1.75*xoff,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="_",size=textsize,font=fontstring,halign="center",valign="center"); translate([1.25*side,2/3*side,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="10",size=textsize,font=fontstring,halign="center",valign="center"); translate([-1.25*side,-2/3*side,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="11",size=textsize,font=fontstring,halign="center",valign="center"); translate([1.25*side,xoff,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="12",size=textsize,font=fontstring,halign="center",valign="center"); translate([-2.25*side,-2/3*side,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="13",size=textsize,font=fontstring,halign="center",valign="center"); translate([-.25*side,-xoff,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="14",size=textsize,font=fontstring,halign="center",valign="center"); translate([1.75*side,-xoff,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="15",size=textsize,font=fontstring,halign="center",valign="center"); translate([-.75*side,2/3*side,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="16",size=textsize,font=fontstring,halign="center",valign="center"); translate([2.25*side,2/3*side,textdepth]) rotate([180,0,180]) linear_extrude(height=textdepth) text(text="17",size=textsize,font=fontstring,halign="center",valign="center"); translate([.75*side,-2/3*side,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="18",size=textsize,font=fontstring,halign="center",valign="center");//*/ translate([-1.75*side,xoff,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="19",size=textsize,font=fontstring,halign="center",valign="center"); translate([.25*side,xoff,textdepth]) rotate([180,0,0]) linear_extrude(height=textdepth) text(text="20",size=textsize,font=fontstring,halign="center",valign="center");//*/ } } Icosahedron_map(side=10);