1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-07-31 03:50:27 +02:00
This commit is contained in:
Justin Lin
2020-05-25 13:43:44 +08:00
parent 3e374e5398
commit 4a691312b5
4 changed files with 67 additions and 49 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -7,7 +7,7 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
## Parameters
- `cmds` : A list of `["forward", length]`s and `["turn", angle]`s.
- `start` : Set the start point of the turtle.
- `start` : Set the start point of the turtle. Default to `[0, 0]`.
## Examples
@@ -50,5 +50,5 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
polyline2d(poly, width = 1);
![t3d](images/lib2x-footprints2-1.JPG)
![footprints2](images/lib2x-footprints2-1.JPG)

55
docs/lib2x-footprints3.md Normal file
View File

@@ -0,0 +1,55 @@
# footprints3
A 3D verion of [footprint2](https://openhome.cc/eGossip/OpenSCAD/lib2x-footprints2.html).
**Since:** 2.4
## Parameters
- `cmds` : A list of `["forward", length]`s, `["turn", angle]`s, `["roll", angle]`s and `["pitch", angle]`s.
- `start` : Set the start point of the turtle. Default to `[0, 0, 0]`.
## Examples
use <hull_polyline3d.scad>;
use <turtle/footprints3.scad>;
function xy_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 = footprints3(
concat(
[
["forward", 10],
["turn", 90],
["forward", 10]
],
xy_arc_cmds(5, 180, 12),
[
["pitch", 90],
["forward", 10],
["roll", 90]
],
xy_arc_cmds(5, 180, 12),
[
["forward", 10]
]
)
);
hull_polyline3d(poly, thickness = 1);
![footprints3](images/lib2x-footprints2-1.JPG)

View File

@@ -1,53 +1,16 @@
/**
* footprints3.scad
*
* @copyright Justin Lin, 2020
* @license https://opensource.org/licenses/lgpl-3.0.html
*
* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-footprints3.html
*
**/
use <_impl/_footprints3.scad>;
use <turtle3d.scad>;
/*
cmds: "forward" ("xu_move"), "turn" ("zu_turn"), "roll" (negative "xu_turn"), "pitch" (negative "yu_turn"),
"xu_move", "yu_move", "zu_move", "xu_turn", "yu_turn", "turn"
```
use <hull_polyline3d.scad>;
use <turtle/footprints3.scad>;
function xy_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]]
);
// cmds: "forward" ("xu_move"), "turn" ("zu_turn"), "roll" (negative "xu_turn"), "pitch" (negative "yu_turn")
poly = footprints3(
concat(
[
["forward", 10],
["turn", 90],
["forward", 10]
],
xy_arc_cmds(5, 180, 12),
[
["pitch", 90],
["forward", 10],
["roll", 90]
],
xy_arc_cmds(5, 180, 12),
[
["forward", 10]
]
)
);
hull_polyline3d(poly, thickness = 1);
```
*/
function footprints3(cmds, start = [0, 0, 0]) =
let(
t = turtle3d("create", start, [[1, 0, 0], [0, 1, 0], [0, 0, 1]]),