From a8472c0831bf95b3be63d8f72cd245bcb4acb8a9 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sat, 31 Jul 2021 12:32:30 +0800 Subject: [PATCH] add knot_tiles --- examples/tiles/knot_tiles.scad | 55 ++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 examples/tiles/knot_tiles.scad diff --git a/examples/tiles/knot_tiles.scad b/examples/tiles/knot_tiles.scad new file mode 100644 index 00000000..ff55a062 --- /dev/null +++ b/examples/tiles/knot_tiles.scad @@ -0,0 +1,55 @@ +use ; +use ; +use ; +use ; + +size = [50, 25]; +tile_width = 5; +line_width = 1; + +$fn = 12; // 4, 8, 12 .... + +for(tile = tile_truchet(size)) { + x = tile[0]; + y = tile[1]; + i = tile[2]; + + choose_children(i) { + tile00(x, y, tile_width, line_width); + tile01(x, y, tile_width, line_width); + tile02(x, y, tile_width, line_width); + tile03(x, y, tile_width, line_width); + }; +} + +module tile00(x, y, tile_width, line_width) { + translate([x, y] * tile_width) + arc(0.5 * tile_width, [0, 90], line_width); + translate([x + 1, y + 1] * tile_width) + arc(0.5 * tile_width, [180, 270], line_width); +} + +module tile01(x, y, tile_width, line_width) { + translate([x, y + 1] * tile_width) + arc(0.5 * tile_width, [270, 360], line_width); + translate([x + 1, y] * tile_width) + arc(0.5 * tile_width, [90, 180], line_width); +} + +module tile02(x, y, tile_width, line_width) { + half_width = tile_width * 0.5; + translate([x, y] * tile_width) { + line2d([half_width, 0], [half_width, tile_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT"); + line2d([0, half_width], [half_width - line_width, half_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT"); + line2d([half_width + line_width, half_width], [tile_width, half_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT"); + } +} + +module tile03(x, y, tile_width, line_width) { + half_width = tile_width * 0.5; + translate([x, y] * tile_width) { + line2d([0, half_width], [tile_width, half_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT"); + line2d([half_width, 0], [half_width, half_width - line_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT"); + line2d([half_width, tile_width], [half_width, half_width + line_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT"); + } +} \ No newline at end of file