lsystem2.scad
1 /** 2 * lsystem2.scad 3 * 4 * @copyright Justin Lin, 2020 5 * @license https://opensource.org/licenses/lgpl-3.0.html 6 * 7 * @see https://openhome.cc/eGossip/OpenSCAD/lib3x-lsystem2.html 8 * 9 **/ 10 11 use <_impl/_lsystem_comm.scad> 12 use <turtle2d.scad> 13 14 function lsystem2(axiom, rules, n, angle, leng = 1, heading = 0, start = [0, 0], forward_chars = "F", rule_prs, seed) = 15 let( 16 codes = _codes(axiom, rules, n, forward_chars, rule_prs, seed), 17 next_t2 = function(t, code, angle, leng) 18 is_undef(code) || code == "[" || code == "]" ? t : 19 code == "F" || code == "f" ? turtle2d("forward", t, leng) : 20 code == "+" ? turtle2d("turn", t, angle) : 21 code == "-" ? turtle2d("turn", t, -angle) : 22 code == "|" ? turtle2d("turn", t, 180) : t 23 ) 24 _lines( 25 turtle2d("create", start.x, start.y, heading), 26 codes, 27 angle, 28 leng, 29 next_t2, 30 function(t) turtle2d("pt", t) 31 );