module Tetrahedron(L) { cylinder(r1=L/sqrt(3), r2=0, h=L*sqrt(6)/3, $fn=3); } module Octahedron(L) { render() { cylinder(r1=L/sqrt(2), r2=0, h=L/sqrt(2), $fn=4); mirror([0,0,1]) cylinder(r1=L/sqrt(2), r2=0, h=L/sqrt(2), $fn=4); } } module PentagonalTrapezohedron(L) { rw = (10/9)*(2*L+L/sqrt(2)); h = 2*L+L/sqrt(2); render() intersection() { translate([0,0,-2*L]) cylinder(r1=rw, r2=0, h=h, $fn=5); mirror([0,0,1]) rotate([0,0,36]) translate([0,0,-2*L]) cylinder(r1=rw, r2=0, h=h, $fn=5); } } module Decahedron(L) { PentagonalTrapezohedron(L); } module Rounded10d(L, roundby) { minkowski() { sphere(r=roundby, $fs=0.2); PentagonalTrapezohedron(L-roundby); } } Tetrahedron(10); translate([15,0,0]) Octahedron(10); translate([32,0,0]) Rounded10d(10, 1);