1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-04-21 06:31:51 +02:00
This commit is contained in:
Justin Lin 2021-09-22 16:30:28 +08:00
parent 3c0c524186
commit b2d2940ef1
3 changed files with 14 additions and 36 deletions

View File

@ -53,4 +53,13 @@ function _geom_info_quick(tris, radius, detail) =
],
faces = [for(i = [0:3:len(points) - 3]) [i, i + 1, i + 2]]
)
[points, faces];
[points, faces];
function _geom_platonic_polyhedra(points, faces, radius, detail, quick_mode) =
let(
tris = [
for(face = faces)
[for(i = face) points[i]]
]
)
quick_mode ? _geom_info_quick(tris, radius, detail) : _geom_info(tris, radius, detail);

View File

@ -1,25 +1,4 @@
use <experimental/tri_subdivide.scad>;
use <experimental/_impl/_geom_prj2sphere.scad>;
use <experimental/_impl/_geom_pts_faces.scad>;
function _geom_dodecahedron(dodecahedron_points, tris, radius, detail) =
let(
points = detail == 0 ? [for(tri = tris) each tri] : [
for(tri = tris)
each [for(t = tri_subdivide(tri, detail)) each t]
]
)
_geom_pts_faces(points, radius);
function _geom_dodecahedron_quick(dodecahedron_points, tris, radius, detail) =
let(
points = detail == 0 ? [for(tri = tris) each _geom_prj2sphere(tri, radius)] : [
for(tri = tris)
each [for(t = tri_subdivide(tri, detail)) each _geom_prj2sphere(t, radius)]
],
faces = [for(i = [0:3:len(points) - 3]) [i, i + 1, i + 2]]
)
[points, faces];
use <experimental/_impl/_geom_platonic_polyhedra.scad>;
function geom_dodecahedron(radius, detail = 0, quick_mode = true) =
let(
@ -57,11 +36,6 @@ function geom_dodecahedron(radius, detail = 0, quick_mode = true) =
[5, 9, 11], [19, 5, 11], [7, 19, 11],
[14, 5, 19], [4, 14, 19], [17, 4, 19],
[14, 12, 1], [5, 14, 1], [9, 5, 1]
],
tris = [
for(face = dodecahedron_faces)
[for(i = face) dodecahedron_points[i]]
]
]
)
quick_mode ? _geom_dodecahedron_quick(dodecahedron_points, tris, radius, detail) :
_geom_dodecahedron(dodecahedron_points, tris, radius, detail);
_geom_platonic_polyhedra(dodecahedron_points, dodecahedron_faces, radius, detail, quick_mode);

View File

@ -13,12 +13,7 @@ function geom_icosahedron(radius, detail = 0, quick_mode = true) =
[9, 5, 1], [4, 11, 5], [2, 10, 11], [6, 7, 10], [8, 1, 7],
[4, 9, 3], [2, 4, 3], [6, 2, 3], [8, 6, 3], [9, 8, 3],
[5, 9, 4], [11, 4, 2], [10, 2, 6], [7, 6, 8], [1, 8, 9]
],
tris = [
for(face = icosahedron_faces)
[for(i = face) icosahedron_points[i]]
]
)
quick_mode ? _geom_info_quick(tris, radius, detail) :
_geom_info(tris, radius, detail);
_geom_platonic_polyhedra(icosahedron_points, icosahedron_faces, radius, detail, quick_mode);