1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-14 02:34:12 +02:00

simplify param

This commit is contained in:
Justin Lin
2019-09-28 18:11:15 +08:00
parent 4fad8da2fa
commit 5f8e4fed0f
2 changed files with 14 additions and 13 deletions

View File

@@ -1,6 +1,5 @@
include <line2d.scad>; include <line2d.scad>;
include <polyline2d.scad>; include <polyline2d.scad>;
include <turtle/turtle2d.scad>;
include <turtle/t2d.scad>; include <turtle/t2d.scad>;
side_leng = 100; side_leng = 100;
@@ -14,7 +13,7 @@ sierpinski_triangle(
module triangle(t, side_leng, thickness) { module triangle(t, side_leng, thickness) {
t2 = t2d(t, "forward", leng = side_leng); t2 = t2d(t, "forward", leng = side_leng);
t3 = t2d(t2, cmds = [ t3 = t2d(t2, [
["turn", 120], ["turn", 120],
["forward", side_leng] ["forward", side_leng]
]); ]);
@@ -33,7 +32,7 @@ module sierpinski_triangle(t, side_leng, min_leng, thickness) {
if(side_leng >= min_leng) { if(side_leng >= min_leng) {
half_leng = side_leng / 2; half_leng = side_leng / 2;
t2 = t2d(t, "forward", leng = half_leng); t2 = t2d(t, "forward", leng = half_leng);
t3 = t2d(t, cmds = [ t3 = t2d(t, [
["turn", 60], ["turn", 60],
["forward", half_leng], ["forward", half_leng],
["turn", -60] ["turn", -60]

View File

@@ -57,6 +57,15 @@ function _t2d_set(t, point, angle, x, y) =
!is_undef(y) ? _t2d_set_y(t, y) : !is_undef(y) ? _t2d_set_y(t, y) :
assert(false, "no target to set"); assert(false, "no target to set");
function _t2d_cmd(t, cmd, point, angle, x, y, leng) =
cmd == "set" ? _t2d_set(t, point, angle, x, y) :
cmd == "forward" ? _t2d_forward(t, leng) :
cmd == "turn" ? _t2d_turn(t, angle) :
cmd == "point" ? _t2d_get_pt(t) :
cmd == "angle" ? _t2d_get_angle(t) :
cmd == "x" ? _t2d_get_x(t) :
cmd == "y" ? _t2d_get_y(t) : assert(false, "unknown command");
function _t2d_cmds(t, cmds, i = 0) = function _t2d_cmds(t, cmds, i = 0) =
i == len(cmds) ? t : i == len(cmds) ? t :
let( let(
@@ -65,14 +74,7 @@ function _t2d_cmds(t, cmds, i = 0) =
) )
_t2d_cmds(_t2d_cmdline(cmd, t, arg), cmds, i + 1); _t2d_cmds(_t2d_cmdline(cmd, t, arg), cmds, i + 1);
function t2d(t, cmd, cmds, point, angle, x, y, leng) = function t2d(t, cmd, point, angle, x, y, leng) =
is_undef(t) ? _t2d_turtle(point, angle) : is_undef(t) ? _t2d_turtle(point, angle) :
cmd == "set" ? _t2d_set(t, point, angle, x, y) : is_string(cmd) ? _t2d_cmd(t, cmd, point, angle, x, y, leng) :
cmd == "forward" ? _t2d_forward(t, leng) : _t2d_cmds(t, cmd) ;
cmd == "turn" ? _t2d_turn(t, angle) :
cmd == "point" ? _t2d_get_pt(t) :
cmd == "angle" ? _t2d_get_angle(t) :
cmd == "x" ? _t2d_get_x(t) :
cmd == "y" ? _t2d_get_y(t) :
!is_undef(cmds) ? _t2d_cmds(t, cmds) :
assert(false, "unknown command");