From e49c40e0f0e882ecd23962913119e8af3d52eb4b Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 3 Dec 2021 09:30:06 +0800 Subject: [PATCH] add polar_zonohedra --- README.md | 1 + .../lib3x-polyhedra_polar_zonohedra-1.JPG | Bin 0 -> 42387 bytes docs/lib3x-polyhedra_polar_zonohedra.md | 22 ++++++++++++++++++ src/experimental/note.md | 2 +- src/polyhedra/geom_polar_zonohedra.scad | 2 ++ src/polyhedra/polar_zonohedra.scad | 19 +++++++-------- 6 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 docs/images/lib3x-polyhedra_polar_zonohedra-1.JPG create mode 100644 docs/lib3x-polyhedra_polar_zonohedra.md diff --git a/README.md b/README.md index 8dede2a1..bbd96aca 100644 --- a/README.md +++ b/README.md @@ -363,6 +363,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp Signature | Description --|-- [**polyhedra/star**([outerRadius, innerRadius, height, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_star.html) | create a 3D star. +[**polyhedra/polar_zonohedra**(n[, theta])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_polar_zonohedra.html) | create a [polar zonohedra](https://mathworld.wolfram.com/PolarZonohedron.html). [**polyhedra/tetrahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_tetrahedron.html) | create a tetrahedron. [**polyhedra/hexahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_hexahedron.html) | create a hexahedron. [**polyhedra/octahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_octahedron.html) | create a octahedron. diff --git a/docs/images/lib3x-polyhedra_polar_zonohedra-1.JPG b/docs/images/lib3x-polyhedra_polar_zonohedra-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..64fd98c8f2a0bc84d98c3eeb66f5872076d8c8ad GIT binary patch literal 42387 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 z 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 + + for(n = [3:8]) { + translate([0.5 * n * (n - 3), 0, 0]) + polar_zonohedra(n); + } + +![polar_zonohedra](images/lib3x-polyhedra_polar_zonohedra-1.JPG) + diff --git a/src/experimental/note.md b/src/experimental/note.md index e60507b1..5185b051 100644 --- a/src/experimental/note.md +++ b/src/experimental/note.md @@ -40,7 +40,7 @@ release: Signature | Description --|-- [**polyhedra/star**([outerRadius, innerRadius, height, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_star.html) | create a 3D star. -polyhedra/polar_zonohedra | ... +[**polyhedra/polar_zonohedra**(n[, theta])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_polar_zonohedra.html) | create a [polar zonohedra](https://mathworld.wolfram.com/PolarZonohedron.html). [**polyhedra/tetrahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_tetrahedron.html) | create a tetrahedron. [**polyhedra/hexahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_hexahedron.html) | create a hexahedron. [**polyhedra/octahedron**(radius[, detail])](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_octahedron.html) | create a octahedron. diff --git a/src/polyhedra/geom_polar_zonohedra.scad b/src/polyhedra/geom_polar_zonohedra.scad index c3a63615..c894e7ce 100644 --- a/src/polyhedra/geom_polar_zonohedra.scad +++ b/src/polyhedra/geom_polar_zonohedra.scad @@ -1,6 +1,8 @@ use <../util/sum.scad>; use <../util/flat.scad>; +// http://archive.bridgesmathart.org/2021/bridges2021-7.pdf + function vertex(i, j, n, theta) = i > j ? [0, 0, 0] : sum([ diff --git a/src/polyhedra/polar_zonohedra.scad b/src/polyhedra/polar_zonohedra.scad index c9547f64..4334bde2 100644 --- a/src/polyhedra/polar_zonohedra.scad +++ b/src/polyhedra/polar_zonohedra.scad @@ -1,13 +1,12 @@ -// http://archive.bridgesmathart.org/2021/bridges2021-7.pdf - -// use ; -// use ; -// use ; - -// for(n = [3:8]) { -// translate([0.5 * n * (n - 3), 0, 0]) -// polar_zonohedra(n); -// } +/** +* polar_zonohedra.scad +* +* @copyright Justin Lin, 2021 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-polyhedra_polar_zonohedra.html +* +**/ use ;