1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-08 07:46:39 +02:00
This commit is contained in:
Justin Lin
2019-09-28 18:14:59 +08:00
parent 5f8e4fed0f
commit ca40a5c120

View File

@@ -10,45 +10,45 @@
function _t2d_turtle(point, angle) = [point, angle]; function _t2d_turtle(point, angle) = [point, angle];
function _t2d_set_point(turtle, point) = [point, _t2d_get_angle(turtle)]; function _t2d_set_point(t, point) = [point, _t2d_get_angle(t)];
function _t2d_set_x(turtle, x) = [[x, _t2d_get_y(turtle)], _t2d_get_angle(turtle)]; function _t2d_set_x(t, x) = [[x, _t2d_get_y(t)], _t2d_get_angle(t)];
function _t2d_set_y(turtle, y) = [[_t2d_get_x(turtle), y], _t2d_get_angle(turtle)]; function _t2d_set_y(t, y) = [[_t2d_get_x(t), y], _t2d_get_angle(t)];
function _t2d_set_angle(turtle, angle) = [_t2d_get_pt(turtle), angle]; function _t2d_set_angle(t, angle) = [_t2d_get_pt(t), angle];
function _t2d_forward(turtle, leng) = function _t2d_forward(t, leng) =
_t2d_turtle( _t2d_turtle(
[ [
_t2d_get_x(turtle) + leng * cos(_t2d_get_angle(turtle)), _t2d_get_x(t) + leng * cos(_t2d_get_angle(t)),
_t2d_get_y(turtle) + leng * sin(_t2d_get_angle(turtle)) _t2d_get_y(t) + leng * sin(_t2d_get_angle(t))
], ],
_t2d_get_angle(turtle) _t2d_get_angle(t)
); );
function _t2d_turn(turtle, angle) = [_t2d_get_pt(turtle), _t2d_get_angle(turtle) + angle]; function _t2d_turn(t, angle) = [_t2d_get_pt(t), _t2d_get_angle(t) + angle];
function _t2d_get_x(turtle) = turtle[0][0]; function _t2d_get_x(t) = t[0][0];
function _t2d_get_y(turtle) = turtle[0][1]; function _t2d_get_y(t) = t[0][1];
function _t2d_get_pt(turtle) = turtle[0]; function _t2d_get_pt(t) = t[0];
function _t2d_get_angle(turtle) = turtle[1]; function _t2d_get_angle(t) = t[1];
function _t2d_two_args_command(cmd, arg1, arg2) = function _t2d_two_args_command(cmd, t, arg) =
is_undef(arg2) ? _t2d_one_arg_command(cmd, arg1) : is_undef(arg) ? _t2d_one_arg_command(cmd, t) :
cmd == "point" ? _t2d_set_point(arg1, arg2) : cmd == "point" ? _t2d_set_point(t, arg) :
cmd == "x" ? _t2d_set_x(arg1, arg2) : cmd == "x" ? _t2d_set_x(t, arg) :
cmd == "y" ? _t2d_set_y(arg1, arg2) : cmd == "y" ? _t2d_set_y(t, arg) :
cmd == "angle" ? _t2d_set_angle(arg1, arg2) : cmd == "angle" ? _t2d_set_angle(t, arg) :
cmd == "forward" ? _t2d_forward(arg1, arg2) : cmd == "forward" ? _t2d_forward(t, arg) :
cmd == "turn" ? _t2d_turn(arg1, arg2) : assert(false, "unknown command"); cmd == "turn" ? _t2d_turn(t, arg) : assert(false, "unknown command");
function _t2d_one_arg_command(cmd, arg) = function _t2d_one_arg_command(cmd, t) =
cmd == "x" ? _t2d_get_x(arg) : cmd == "x" ? _t2d_get_x(t) :
cmd == "y" ? _t2d_get_y(arg) : cmd == "y" ? _t2d_get_y(t) :
cmd == "angle" ? _t2d_get_angle(arg) : cmd == "angle" ? _t2d_get_angle(t) :
cmd == "point" ? _t2d_get_pt(arg) : assert(false, "unknown command"); cmd == "point" ? _t2d_get_pt(t) : assert(false, "unknown command");
function _t2d_cmdline(cmd, arg1, arg2) = function _t2d_cmdline(cmd, t, arg) =
_t2d_two_args_command(cmd, arg1, arg2); _t2d_two_args_command(cmd, t, arg);
function _t2d_set(t, point, angle, x, y) = function _t2d_set(t, point, angle, x, y) =
!is_undef(point) ? _t2d_set_point(t, point) : !is_undef(point) ? _t2d_set_point(t, point) :