From c3b26097efa5d802fb81fa851d62934931326698 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 27 Mar 2020 08:59:51 +0800 Subject: [PATCH] add doc --- README.md | 2 +- docs/images/lib2x-ptf_bend-1.JPG | Bin 0 -> 34922 bytes docs/lib2x-ptf_bend.md | 32 +++++++++++++++++++++++++++++++ src/ptf/ptf_bend.scad | 15 +++++++++------ 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 docs/images/lib2x-ptf_bend-1.JPG create mode 100644 docs/lib2x-ptf_bend.md diff --git a/README.md b/README.md index 863c045c..8f4c1b7c 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ See [examples](examples). - [ptf/ptf_x_twist](https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_x_twist.html) - [ptf/ptf_y_twist](https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_y_twist.html) - [ptf/ptf_circle](https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_circle.html) - - ptf/ptf_bend + - [ptf/ptf_bend](https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_bend.html) - ptf/ptf_ring - ptf/ptf_sphere - ptf/ptf_torus diff --git a/docs/images/lib2x-ptf_bend-1.JPG b/docs/images/lib2x-ptf_bend-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..12a1996f7464bdb3825ed20ad76be12112dda3b5 GIT binary patch literal 34922 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 vNYdC-5Gy2zf>;9a3}@gbH(<%Q+Vr1?a7@ literal 0 HcmV?d00001 diff --git a/docs/lib2x-ptf_bend.md b/docs/lib2x-ptf_bend.md new file mode 100644 index 00000000..ec5ac7a9 --- /dev/null +++ b/docs/lib2x-ptf_bend.md @@ -0,0 +1,32 @@ +# ptf_bend + +Transforms a point inside a rectangle to a point of an arc. + +**Since:** 2.3. + +## Parameters + +- `size` : 2 value array `[x, y]`, rectangle with dimensions `x` and `y`. +- `point` : The point to be transformed. +- `radius` : The radius of the arc. +- `angle` : The central angle of the arc. + +## Examples + + use ; + use ; + + t = "dotSCAD"; + size = [len(t) * 8, 8]; + radius = 20; + angle = 180; + + for(i = [0:len(t) - 1]) { + for(pt = px_ascii(t[i], invert = true)) { + bended = ptf_bend(size, pt + [i * 8, 0], radius, angle); + translate(bended) + sphere(0.5, $fn = 24); + } + } + +![ptf_bend](images/lib2x-ptf_bend-1.JPG) diff --git a/src/ptf/ptf_bend.scad b/src/ptf/ptf_bend.scad index d5da7b2c..a6e3a1f3 100644 --- a/src/ptf/ptf_bend.scad +++ b/src/ptf/ptf_bend.scad @@ -1,9 +1,12 @@ -/* - size: The size of the rectangle which can contain the point. - point: A point in the rectangle. - radius: The radius of the arc after being bent - angle: The central angle of the arc. -*/ +/** +* ptf_bend.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_bend.html +* +**/ function ptf_bend(size, point, radius, angle) = let(