From 174eb609d5f1630ac7e425ab62f29fa8be209c5c Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Tue, 16 Aug 2022 10:36:34 +0800 Subject: [PATCH] add doc --- README.md | 6 +++++ docs/images/lib3x-tri_subdivide-1.JPG | Bin 0 -> 33088 bytes docs/lib3x-tri_subdivide.md | 31 ++++++++++++++++++++++++++ src/experimental/note.md | 4 ++-- src/triangle/tri_subdivide.scad | 12 +++++++++- 5 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 docs/images/lib3x-tri_subdivide-1.JPG create mode 100644 docs/lib3x-tri_subdivide.md diff --git a/README.md b/README.md index 3d2a37a9..7fcdb570 100644 --- a/README.md +++ b/README.md @@ -404,6 +404,12 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp --|-- [**matrix/m_replace**(m, i, j, value)](https://openhome.cc/eGossip/OpenSCAD/lib3x-m_replace.html) | replace the aᵢⱼ element of a matrix. +## Triangle + + Signature | Description +--|-- +[**triangle/tri_subdivide**(shape_pts[, n])](https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_subdivide.html) | subdivide a triangle `n` times. + ## Point Picking Signature | Description diff --git a/docs/images/lib3x-tri_subdivide-1.JPG b/docs/images/lib3x-tri_subdivide-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..a7df79cbadc58e5f2cc8915a0a7ce917971aa4e0 GIT binary patch literal 33088 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 literal 0 HcmV?d00001 diff --git a/docs/lib3x-tri_subdivide.md b/docs/lib3x-tri_subdivide.md new file mode 100644 index 00000000..0cdad776 --- /dev/null +++ b/docs/lib3x-tri_subdivide.md @@ -0,0 +1,31 @@ +# tri_subdivide + +Subdivide a triangle `n` times. + +**Since:** 3.3 + +## Parameters + +- `shape_pts` : the vertices of a 2D or 3D triangle. +- `n` : subdivide a triangle `n` times. Default to 1. + +## Examples + + use + use + + radius = 10; + tri = shape_circle(radius, $fn = 3); + + polygon(tri); + + for(n = [1:3]) { + subdivided = tri_subdivide(tri, n); + translate([radius * 2 * n, 0]) + for(t = subdivided) { + offset(-.1) + polygon(t); + } + } + +![tri_subdivide](images/lib3x-tri_subdivide-1.JPG) \ No newline at end of file diff --git a/src/experimental/note.md b/src/experimental/note.md index 882ccab4..111b5643 100644 --- a/src/experimental/note.md +++ b/src/experimental/note.md @@ -4,8 +4,6 @@ to_do: new: -- triangle/tri_subdivide - - mz_hamiltonian supports init_cells update doc mz_square_initialize @@ -33,4 +31,6 @@ doc-ed - util/sorted, util/binary_search, util/contains - maze/mz_square, maze/mz_theta, maze/mz_squarewalls, maze/mz_hexwalls, maze/mz_tiles - matrix/m_replace + - triangle/tri_subdivide + diff --git a/src/triangle/tri_subdivide.scad b/src/triangle/tri_subdivide.scad index f892a8b3..32b64493 100644 --- a/src/triangle/tri_subdivide.scad +++ b/src/triangle/tri_subdivide.scad @@ -1,6 +1,16 @@ +/** +* tri_subdivide.scad +* +* @copyright Justin Lin, 2022 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-tri_subdivide.html +* +**/ + use <_impl/_tri_subdivide_impl.scad> -function tri_subdivide(shape_pts, n) = +function tri_subdivide(shape_pts, n = 1) = n == 0 ? [shape_pts] : let( pts = _tri_subdivide_pts(shape_pts, n + 1),