mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-16 11:44:50 +02:00
avoid recursion limit
This commit is contained in:
@@ -56,10 +56,19 @@ _mz_hamiltonian_nxt_offset = [
|
|||||||
[-1, 0], // LEFT
|
[-1, 0], // LEFT
|
||||||
[1, 0] // RIGHT
|
[1, 0] // RIGHT
|
||||||
];
|
];
|
||||||
|
|
||||||
|
function nxtp(dotM, p) = p + _mz_hamiltonian_nxt_offset[_mz_hamiltonian_dir(_mz_hamiltonian_corner_value(dotM, p.x, p.y))];
|
||||||
|
|
||||||
function _mz_hamiltonian_travel(dotM, p, leng, i = 0) =
|
function _mz_hamiltonian_travel(dotM, p, leng, i = 0) =
|
||||||
i == leng ? [] :
|
|
||||||
let(
|
let(
|
||||||
dir_i = _mz_hamiltonian_dir(_mz_hamiltonian_corner_value(dotM, p.x, p.y)),
|
pts = [
|
||||||
nxt_p = p + _mz_hamiltonian_nxt_offset[dir_i]
|
for(i = 0, nxt_p = nxtp(dotM, p), is_continue = i < leng;
|
||||||
|
is_continue;
|
||||||
|
i = i + 1,
|
||||||
|
is_continue = i < leng,
|
||||||
|
nxt_p = is_continue ? nxtp(dotM, nxt_p) : undef
|
||||||
)
|
)
|
||||||
[p, each _mz_hamiltonian_travel(dotM, nxt_p, leng, i + 1)];
|
nxt_p
|
||||||
|
]
|
||||||
|
)
|
||||||
|
[each pts, nxtp(dotM, pts[len(pts) - 1])];
|
||||||
|
Reference in New Issue
Block a user