/ examples / tiles / 2_corner_wang_tiles_basic.scad
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  }