i wish to chain cubes end to end inside a loop, so that i can construct a spiral made of cubes only using dynamic rules of how they are added together rather than a parametric equation. i.e. translate 1, tilt 20', rotate-z 10'... would make a 3d spirograph.
Here is an example file using openscad recursion (which memory-crashes very fast compared to openscad loops) i wish to do the same using a loop? i am confused.
levels = 50; // number of levels for the recursion
len = 100; // length of the first segment
thickness = 5; // thickness of the first segment
// the identity matrix
identity = [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ];
// random generator
function rnd(s, e) = rands(s, e, 1)[0];
// generate 4x4 translation matrix
function mt(x, y) = [ [ 1, 0, 0, x ], [ 0, 1, 0, y ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ];
// generate 4x4 rotation matrix around Z axis
function mr(a) = [ [ cos(a), -sin(a), 0, 0 ], [ sin(a), cos(a), 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ];
module tree(length, thickness, count, m = identity) {
color([0, 1 - (0.8 / levels * count), 0])
multmatrix(m)
cube([thickness, length, thickness]);
if (count > 0) {
tree( length, thickness, count - 1, m * mt(0, length) * mr(31.4159));
}
}
tree(len, thickness, levels);