2_corner_wang_tiles_basic.scad
1 use <experimental/tile_w2c.scad> 2 use <arc.scad> 3 4 size = [15, 10]; 5 tile_width = 10; 6 tile_thickness = 2; 7 $fn = 24; 8 9 translate([tile_width, tile_width] / 2) 10 for(tile = tile_w2c(size)) { 11 x = tile[0]; 12 y = tile[1]; 13 i = tile[2]; 14 translate([x, y] * tile_width) 15 sample_tile(i, tile_width, tile_thickness); 16 } 17 18 module sample_tile(n, width, thickness) { 19 half_w = width / 2; 20 21 diff_polygons = [ 22 [[]], 23 [[[0, 0], [half_w, 0], [half_w, half_w], [0, half_w]]], 24 [[[0, 0], [0, -half_w], [half_w, -half_w], [half_w, 0]]], 25 [[[0, -half_w], [half_w, -half_w], [half_w, half_w], [0, half_w]]], 26 [[[0, 0], [-half_w, 0], [-half_w, -half_w], [0, -half_w]]], 27 [ 28 [[0, 0], [half_w, 0], [half_w, half_w], [0, half_w]], 29 [[0, 0], [-half_w, 0], [-half_w, -half_w], [0, -half_w]] 30 ], 31 [[[-half_w, 0], [-half_w, -half_w], [half_w, -half_w], [half_w, 0]]], 32 [ 33 [[0, 0], [half_w, 0], [half_w, half_w], [0, half_w]], 34 [[-half_w, 0], [-half_w, -half_w], [half_w, -half_w], [half_w, 0]] 35 ], 36 [[[0, 0], [0, half_w], [-half_w, half_w], [-half_w, 0]]], 37 [[[half_w, 0], [half_w, half_w], [-half_w, half_w], [-half_w, 0]]], 38 [ 39 [[0, 0], [0, -half_w], [half_w, -half_w], [half_w, 0]], 40 [[0, 0], [0, half_w], [-half_w, half_w], [-half_w, 0]] 41 ], 42 [ 43 [[half_w, 0], [half_w, half_w], [-half_w, half_w], [-half_w, 0]], 44 [[0, 0], [0, -half_w], [half_w, -half_w], [half_w, 0]] 45 ], 46 [[[0, half_w], [-half_w, half_w], [-half_w, -half_w], [0, -half_w]]], 47 [ 48 [[0, half_w], [-half_w, half_w], [-half_w, -half_w], [0, -half_w]], 49 [[0, 0], [half_w, 0], [half_w, half_w], [0, half_w]] 50 ], 51 [ 52 [[-half_w, 0], [-half_w, -half_w], [half_w, -half_w], [half_w, 0]], 53 [[0, 0], [0, half_w], [-half_w, half_w], [-half_w, 0]] 54 ], 55 [[[half_w, half_w], [-half_w, half_w], [-half_w, -half_w], [half_w, -half_w]]] 56 ]; 57 58 color("blue") 59 linear_extrude(thickness) 60 difference() { 61 square(width, center = true); 62 for(diff_polygon = diff_polygons[n]) { 63 offset(0.01) polygon(diff_polygon); 64 } 65 } 66 67 color("yellow") 68 linear_extrude(thickness / 2) 69 square(width, center = true); 70 }