tile_truchet.scad
1 use <util/choose.scad> 2 3 function tile_truchet(size, mask, seed) = 4 let( 5 rows = size[1], 6 columns = size[0], 7 y_range = [0:rows - 1], 8 x_range = [0:columns - 1], 9 nums = [0, 1, 2, 3], 10 ones = [for(x = x_range) 1], 11 m = is_undef(mask) ? [ 12 for(y = y_range) 13 ones 14 ] : [ 15 for(y = rows - 1; y > -1; y = y - 1) 16 let(my = mask[y]) 17 [for(x = x_range) my[x]] 18 ] 19 ) 20 is_undef(seed) ? [ 21 for(y = y_range) 22 let(my = m[y]) 23 for(x = x_range) 24 if(my[x] == 1) 25 [x, y, choose(nums)] 26 27 ] : [ 28 for(y = y_range) 29 let(my = m[y]) 30 for(x = x_range) 31 if(my[x] == 1) 32 [x, y, choose(nums, x + y * rows + seed)] 33 ];