Skip to content

Instantly share code, notes, and snippets.

@Hermann-SW
Created August 2, 2022 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Hermann-SW/ddea53d73f143dff3ece9a3d1ead0efd to your computer and use it in GitHub Desktop.
Save Hermann-SW/ddea53d73f143dff3ece9a3d1ead0efd to your computer and use it in GitHub Desktop.
dotCSAD icosaeder, prepared for OpenSCAD "animate"
// require https://github.com/JustinSDK/dotSCAD
use <triangle/tri_subdivide.scad>
use <polyhedra/geom_icosahedron.scad>
use <surface/sf_solidifyT.scad>
icosahedron_detail = 0;
subdivided_n = 0;
radius = 10;
thickness = 1;
geom = geom_icosahedron(radius, icosahedron_detail);
points = geom[0];
faces = geom[1];
$vpr=[$t*360,0,0];
$vpt=[0,3,0];
echo(rands(0,1,3,1234));
for(f = faces) {
triangle = [for(i = f) points[i]];
// subdivide the triangle
triangles = tri_subdivide(triangle, subdivided_n);
points_inner = [
for(t = triangles, p = t)
let(unit_vector = p / norm(p))
unit_vector * radius
];
points_outer = [
for(t = triangles, p = t)
let(unit_vector = p / norm(p))
unit_vector * (radius - thickness)
];
ff = [for(i = [0:3:len(points_inner) - 3]) [i, i + 1, i + 2]];
color(rands(0, 1, 3))
sf_solidifyT(points_outer, points_inner, ff);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment