diff --git a/README.md b/README.md index 5118bed9..863c045c 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ See [examples](examples). - [ptf/ptf_rotate](https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_rotate.html) - [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 + - [ptf/ptf_circle](https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_circle.html) - ptf/ptf_bend - ptf/ptf_ring - ptf/ptf_sphere diff --git a/docs/images/lib2x-ptf_circle-1.JPG b/docs/images/lib2x-ptf_circle-1.JPG new file mode 100644 index 00000000..377e1090 Binary files /dev/null and b/docs/images/lib2x-ptf_circle-1.JPG differ diff --git a/docs/images/lib2x-ptf_circle-2.JPG b/docs/images/lib2x-ptf_circle-2.JPG new file mode 100644 index 00000000..7f19288f Binary files /dev/null and b/docs/images/lib2x-ptf_circle-2.JPG differ diff --git a/docs/lib2x-ptf_circle.md b/docs/lib2x-ptf_circle.md new file mode 100644 index 00000000..f67430cb --- /dev/null +++ b/docs/lib2x-ptf_circle.md @@ -0,0 +1,41 @@ +# ptf_circle + +Transform a point inside a rectangle to a point inside a circle. You can use it to create something such as a [noisy circle maze](https://github.com/JustinSDK/dotSCAD/blob/master/examples/maze/noisy_circle_maze.scad). + +![ptf_circle](images/lib2x-ptf_circle-1.JPG) + +**Since:** 2.3. + +## Parameters + +- `size` : 2 value array `[x, y]`, rectangle with dimensions `x` and `y`. +- `point` : The point to be transformed. + +## Examples + + use ; + use ; + + size = [10, 10]; + + rows = [ + for(y = [0:size[1]]) + [for(x = [0:size[0]]) [x, y]] + ]; + + columns = [ + for(x = [0:size[0]]) + [for(y = [0:size[1]]) [x, y]] + ]; + + for(line = rows) { + twisted = [for(p = line) ptf_circle(size, p)]; + hull_polyline3d(twisted, thickness = .1); + } + + for(line = columns) { + twisted = [for(p = line) ptf_circle(size, p)]; + hull_polyline3d(twisted, thickness = .1); + } + +![ptf_circle](images/lib2x-ptf_circle-2.JPG) diff --git a/src/ptf/ptf_circle.scad b/src/ptf/ptf_circle.scad index 55960940..5bc2d7b5 100644 --- a/src/ptf/ptf_circle.scad +++ b/src/ptf/ptf_circle.scad @@ -1,3 +1,13 @@ +/** +* ptf_circle.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-ptf_circle.html +* +**/ + function ptf_circle(size, point) = let( p_offset = -size / 2,