scad/D20 Net/icosahedron.scad

141 lines
6.3 KiB
OpenSCAD
Raw Normal View History

2024-06-24 15:56:57 +02:00
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);