1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-01-17 22:28:16 +01:00
dotSCAD/examples/soccer_polyhedron.scad

59 lines
1.4 KiB
OpenSCAD
Raw Normal View History

2019-12-06 11:28:51 +08:00
module soccer_polyhedron(circumradius, spacing) {
2019-10-12 21:51:20 +08:00
tau = 1.618034;
a = -37.377368;
scale_f = 0.201774;
2019-12-06 11:28:51 +08:00
2019-12-07 17:14:27 +08:00
s = scale_f * spacing * 2;
2019-10-12 21:51:20 +08:00
module pentagonal_pyramid() {
pentagon_r = 1.701302;
pentagon_h = 4.654877;
2019-10-13 06:59:09 +08:00
color("black")
2019-12-07 17:14:27 +08:00
translate([0, 0, -pentagon_h])
2019-12-06 11:28:51 +08:00
linear_extrude(pentagon_h, scale = 0.001)
2019-10-12 21:51:20 +08:00
rotate(-36)
2019-12-07 17:14:27 +08:00
circle(pentagon_r - s / cos(36) , $fn = 5);
2019-10-12 21:51:20 +08:00
}
module hexagonal_pyramid() {
hexagon_r = 2;
hexagon_h = 4.534568;
2019-10-13 06:59:09 +08:00
color("white")
2019-12-07 17:14:27 +08:00
translate([0, 0, -hexagon_h])
2019-10-13 06:59:09 +08:00
linear_extrude(hexagon_h, scale = 0.001)
rotate(-30)
2019-12-07 17:14:27 +08:00
circle(hexagon_r - s / cos(30), $fn = 6);
2019-10-12 21:51:20 +08:00
}
module one_component_around_pentagonal_pyramid() {
mirror([1, 0, 0])
rotate([0, -a, 60]) {
pentagonal_pyramid();
for(i = [0:1]) {
rotate([0, a, 72 * i])
hexagonal_pyramid();
}
}
}
module half_soccer_polyhedron() {
pentagonal_pyramid();
for(i = [0:4]) {
rotate([0, a, 72 * i])
one_component_around_pentagonal_pyramid();
}
}
scale(scale_f * circumradius) {
half_soccer_polyhedron();
rotate(36)
mirror([0, 0, 1])
half_soccer_polyhedron();
}
}
2019-12-06 11:28:51 +08:00
soccer_polyhedron(10, 0);
2019-10-12 21:51:20 +08:00
%sphere(10, $fn = 48);