1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-01-29 11:58:39 +01:00
This commit is contained in:
Justin Lin 2020-05-25 13:35:23 +08:00
parent cc44be68e1
commit 3e374e5398
3 changed files with 68 additions and 46 deletions

View File

@ -210,6 +210,9 @@ See [examples](examples).
- [util/sum](https://openhome.cc/eGossip/OpenSCAD/lib2x-sum.html)
- [util/zip](https://openhome.cc/eGossip/OpenSCAD/lib2x-zip.html)
### Turtle
- [turtle/footprints2](https://openhome.cc/eGossip/OpenSCAD/lib2x-footprints2.html)
----
## Bugs and Feedback

54
docs/lib2x-footprints2.md Normal file
View File

@ -0,0 +1,54 @@
# footprints2
Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is intended to use a turtle to imitate freehand drawing.
**Since:** 2.4
## Parameters
- `cmds` : A list of `["forward", length]`s and `["turn", angle]`s.
- `start` : Set the start point of the turtle.
## Examples
use <polyline2d.scad>;
use <turtle/footprints2.scad>;
function arc_cmds(radius, angle, steps) =
let(
fa = angle / steps,
ta = fa / 2,
leng = sin(ta) * radius * 2
)
concat(
[["turn", ta]],
[
for(i = [0:steps - 2])
each [["forward", leng], ["turn", fa]]
],
[["forward", leng], ["turn", ta]]
);
poly = footprints2(
concat(
[
["forward", 10],
["turn", 90],
["forward", 10]
],
arc_cmds(5, 180, 12),
[
["turn", -90],
["forward", 10],
["turn", 90],
["forward", 10],
["turn", 90],
["forward", 10]
]
)
);
polyline2d(poly, width = 1);
![t3d](images/lib2x-footprints2-1.JPG)

View File

@ -1,51 +1,16 @@
use <turtle2d.scad>;
/**
* footprints2.scad
*
* @copyright Justin Lin, 2020
* @license https://opensource.org/licenses/lgpl-3.0.html
*
* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-footprints2.html
*
**/
use <_impl/_footprints2.scad>;
use <turtle2d.scad>;
/*
cmds: "turn", "forward"
demo code
```
use <turtle/footprints2.scad>;
use <hull_polyline2d.scad>;
function arc_cmds(radius, angle, steps) =
let(
fa = angle / steps,
ta = fa / 2,
leng = sin(ta) * radius * 2
)
concat(
[["turn", ta]],
[
for(i = [0:steps - 2])
each [["forward", leng], ["turn", fa]]
],
[["forward", leng], ["turn", ta]]
);
poly = footprints2(
concat(
[
["forward", 10],
["turn", 90],
["forward", 10]
],
arc_cmds(5, 180, 12),
[
["turn", -90],
["forward", 10],
["turn", 90],
["forward", 10],
["turn", 90],
["forward", 10]
]
)
);
hull_polyline2d(poly, width = 1);
```
*/
function footprints2(cmds, start = [0, 0]) =
let(
t = turtle2d("create", start[0], start[1], 0),