07-Jan-2022 19:17:13 eternity_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 eternity() analyzes the Eternity tiling puzzle. adjacency_plot_test(): adjacency_plot() uses adjacency information to plot the 36 30-60-90 triangles in a tile. Graphics saved as "hexagon_adjacency.png" adjacency_plot_test(): Normal end of execution. adjacency_to_triangle_ij_test(): adjacency_to_triangle_ij() takes a list of adjacent 30-60-90 triangles, and returns a list of (i,j) vertex coordinates. #k (ai,aj) (bi,bi) (cx,cy) 1: (0,0), (2,2), (2,0) 2: (4,0), (2,2), (2,0) 3: (4,0), (2,2), (3,3) 4: (2,6), (2,2), (3,3) 5: (2,6), (2,2), (1,3) 6: (0,0), (2,2), (1,3) 7: (2,6), (4,4), (3,3) 8: (4,0), (4,4), (3,3) 9: (4,0), (4,4), (5,3) 10: (6,6), (4,4), (5,3) 11: (6,6), (4,4), (4,6) 12: (2,6), (4,4), (4,6) 13: (4,0), (6,2), (6,0) 14: (8,0), (6,2), (6,0) 15: (8,0), (6,2), (7,3) 16: (6,6), (6,2), (7,3) 17: (6,6), (6,2), (5,3) 18: (4,0), (6,2), (5,3) 19: (10,6), (8,4), (8,6) 20: (6,6), (8,4), (8,6) 21: (6,6), (8,4), (7,3) 22: (8,0), (8,4), (7,3) 23: (8,0), (8,4), (9,3) 24: (10,6), (8,4), (9,3) 25: (8,0), (10,2), (10,0) 26: (12,0), (10,2), (10,0) 27: (12,0), (10,2), (11,3) 28: (10,6), (10,2), (11,3) 29: (10,6), (10,2), (9,3) 30: (8,0), (10,2), (9,3) 31: (6,6), (4,8), (4,6) 32: (2,6), (4,8), (4,6) 33: (2,6), (4,8), (3,9) 34: (10,6), (8,8), (8,6) 35: (6,6), (8,8), (8,6) 36: (6,6), (8,8), (7,9) Graphics saved as "tile001_triangle_ij.png" adjacency_to_triangle_ij_test(): Normal end of execution. adjacency_to_triangle_xy_test(): adjacency_to_triangle_xy() takes a list of adjacent 30-60-90 triangles, and returns a list of (x,y) vertex coordinates. #i (ax,ay) (bx,by) (cx,cy) 1: (0.000000,0.000000), (0.500000,0.288675), (0.500000,0.000000) 2: (1.000000,0.000000), (0.500000,0.288675), (0.500000,0.000000) 3: (1.000000,0.000000), (0.500000,0.288675), (0.750000,0.433013) 4: (0.500000,0.866025), (0.500000,0.288675), (0.750000,0.433013) 5: (0.500000,0.866025), (0.500000,0.288675), (0.250000,0.433013) 6: (0.000000,0.000000), (0.500000,0.288675), (0.250000,0.433013) 7: (0.500000,0.866025), (1.000000,0.577350), (0.750000,0.433013) 8: (1.000000,0.000000), (1.000000,0.577350), (0.750000,0.433013) 9: (1.000000,0.000000), (1.000000,0.577350), (1.250000,0.433013) 10: (1.500000,0.866025), (1.000000,0.577350), (1.250000,0.433013) 11: (1.500000,0.866025), (1.000000,0.577350), (1.000000,0.866025) 12: (0.500000,0.866025), (1.000000,0.577350), (1.000000,0.866025) 13: (1.000000,0.000000), (1.500000,0.288675), (1.500000,0.000000) 14: (2.000000,0.000000), (1.500000,0.288675), (1.500000,0.000000) 15: (2.000000,0.000000), (1.500000,0.288675), (1.750000,0.433013) 16: (1.500000,0.866025), (1.500000,0.288675), (1.750000,0.433013) 17: (1.500000,0.866025), (1.500000,0.288675), (1.250000,0.433013) 18: (1.000000,0.000000), (1.500000,0.288675), (1.250000,0.433013) 19: (2.500000,0.866025), (2.000000,0.577350), (2.000000,0.866025) 20: (1.500000,0.866025), (2.000000,0.577350), (2.000000,0.866025) 21: (1.500000,0.866025), (2.000000,0.577350), (1.750000,0.433013) 22: (2.000000,0.000000), (2.000000,0.577350), (1.750000,0.433013) 23: (2.000000,0.000000), (2.000000,0.577350), (2.250000,0.433013) 24: (2.500000,0.866025), (2.000000,0.577350), (2.250000,0.433013) 25: (2.000000,0.000000), (2.500000,0.288675), (2.500000,0.000000) 26: (3.000000,0.000000), (2.500000,0.288675), (2.500000,0.000000) 27: (3.000000,0.000000), (2.500000,0.288675), (2.750000,0.433013) 28: (2.500000,0.866025), (2.500000,0.288675), (2.750000,0.433013) 29: (2.500000,0.866025), (2.500000,0.288675), (2.250000,0.433013) 30: (2.000000,0.000000), (2.500000,0.288675), (2.250000,0.433013) 31: (1.500000,0.866025), (1.000000,1.154701), (1.000000,0.866025) 32: (0.500000,0.866025), (1.000000,1.154701), (1.000000,0.866025) 33: (0.500000,0.866025), (1.000000,1.154701), (0.750000,1.299038) 34: (2.500000,0.866025), (2.000000,1.154701), (2.000000,0.866025) 35: (1.500000,0.866025), (2.000000,1.154701), (2.000000,0.866025) 36: (1.500000,0.866025), (2.000000,1.154701), (1.750000,1.299038) Graphics saved as "tile001_triangle_xy.png" adjacency_to_triangle_xy_test(): Normal end of execution. border_plot_test(): border_plot() plots the border of an Eternity object. Graphics saved as "eternity_border.png" Graphics saved as "hexagon_border.png" Graphics saved as "hexagon3_border.png" Graphics saved as "rectangle_4x5_border.png" border_plot_test(): Normal end of execution. Graphics saved as "edge_lengths.png" eternity_grid_line_plot(): Plot the grid lines of the Eternity grid. Graphics saved as "eternity_grid_line.png" eternity_grid_line_plot(): Normal end of execution. Skipping call to eternity_lp! hexagon_grid_line_plot Plot the lines of a hexagon grid. Graphics saved as "hexagon_grid_line.png" hexagon_grid_line_plot Normal end of execution. hexagon_triangle_plot_test(): hexagon_triangle_plot() plots triangles in a hexagon. Graphics saved as "hexagon_triangle_plot.png" hexagon_triangle_plot_test(): Normal end of execution. hexagon3_grid_line_plot Plot the lines of a hexagon3 grid. Graphics saved as "hexagon3_grid_line.png" hexagon3_grid_line_plot Normal end of execution. node_ij_plot_test(): node_ij_plot() plots the (i,j) coordinates of the nodes of an Eternity object. Graphics saved as "hexagon_node_ij.png" Graphics saved as "hexagon3_node_ij.png" Graphics saved as "rectangle_2x2_node_ij.png" Graphics saved as "rectangle_4x5_node_ij.png" node_ij_plot_test(): Normal end of execution. node_xy_plot_test(): node_xy_plot() plots nodes of an Eternity object. Graphics saved as "hexagon_node_xy.png" Graphics saved as "hexagon3_node_xy.png" Graphics saved as "rectangle_4x5_node_xy.png" node_xy_plot_test(): Normal end of execution. polygon_contains_point_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 polygon_contains_point() determines if a point Q is inside a polygon P. Vertices of polygon P: 1: 0 0 2: 1 0 3: 2 1 4: 1 2 5: 0 2 Q Inside? ( 1.0000, 1.0000) true ( 3.0000, 4.0000) false ( 0.1000, 1.0000) true ( 0.5000, -0.2500) false rectangle_grid_line_plot_test(): rectangle_grid_line_plot() plots the lines of an Eternity rectangle grid. rectangle_grid_line plot Plot the grid lines of a rectangle object. Graphics saved as "rectangle_4x4_grid_line.png" rectangle_grid_line_plot Normal end of execution. rectangle_grid_line plot Plot the grid lines of a rectangle object. Graphics saved as "rectangle_4x5_grid_line.png" rectangle_grid_line_plot Normal end of execution. rectangle_grid_line plot Plot the grid lines of a rectangle object. Graphics saved as "rectangle_5x5_grid_line.png" rectangle_grid_line_plot Normal end of execution. rectangle_grid_line plot Plot the grid lines of a rectangle object. Graphics saved as "rectangle_5x4_grid_line.png" rectangle_grid_line_plot Normal end of execution. rectangle_grid_line_plot_test(): Normal end of execution. rectangle_node_count_test(): rectangle_node_count() computes the number of nodes of a rectangle grid. U1 = prediction from rectangle_node_count() U2 = count of generated nodes. NX NY U1 U2 4 4 113 113 4 5 139 139 5 5 171 171 5 4 139 139 10 10 641 641 rectangle_node_count_test(): Normal end of execution. rectangle_triangle_plot_test(): rectangle_triangle_plot() plots triangles in a rectangle. Graphics saved as "rectangle_2x2_triangle.png" rectangle_triangle_plot_test(): Normal end of execution. region_grid_ij_tikz_test(): region_grid_ij_tikz() creates a tikz image of the boundary and elemental triangles that constitute an Eternity region using the (i,j) coordinate system. Graphics saved as "trinity_boundary_ij.tex" Graphics saved as "trinity_triangles_ij.tex" region_grid_xy_tikz_test(): region_grid_xy_tikz() creates a tikz image of the boundary and elemental triangles that constitute an Eternity region using the (x,y) coordinate system. Graphics saved as "trinity_boundary_xy.tex" Graphics saved as "trinity_triangles_xy.tex" s_substitute_test():: s_substitute() substitutes characters in a string. Old chars = "gao" New chars = "Jen" Old string = "Galapagos" New string = "GelepeJns" s_substitute_test(): Normal end of execution. tile_vertices_xy_tikz_test(): tile_vertices_xy_tikz() prints the Tikz commands to draw a given Eternity tile. % eternity tile 1 \draw (0.000000, 0.000000) -- (3.000000, 0.000000) -- (2.500000, 0.866025) -- (1.750000, 1.299038) -- (1.500000, 0.866025) -- (0.750000, 1.299038) -- cycle; % eternity tile 2 \draw (0.000000, 0.000000) -- (3.000000, 0.000000) -- (3.000000, 0.866025) -- (1.500000, 0.866025) -- (0.750000, 1.299038) -- cycle; % eternity tile 3 \draw (0.000000, 0.000000) -- (3.000000, 0.000000) -- (3.250000, 0.433013) -- (2.500000, 0.866025) -- (1.500000, 0.866025) -- (0.750000, 1.299038) -- cycle; % eternity tile 4 \draw (0.000000, 0.000000) -- (2.000000, 0.000000) -- (2.250000, -0.433013) -- (3.000000, -0.000000) -- (2.500000, 0.866025) -- (1.500000, 0.866025) -- (0.750000, 1.299038) -- cycle; % eternity tile 5 \draw (0.000000, 0.000000) -- (3.000000, 0.000000) -- (3.250000, 0.433013) -- (2.500000, 0.866025) -- (1.500000, 0.866025) -- (1.250000, 1.299038) -- (0.500000, 0.866025) -- cycle; triangle_k_test(): triangle_k() indexes the nodes forming the 30-60-90 triangles of an Eternity object. hexagon: #: Type 30 60 90 1: -5 4 5 2 2: -1 1 5 6 3: 6 1 5 2 4: -6 1 7 3 5: 1 1 7 6 6: 5 8 7 3 7: 2 4 5 9 8: -6 4 12 9 9: 1 4 12 11 10: -4 18 12 11 11: 3 18 12 16 12: -5 18 19 16 13: -1 13 19 20 14: 6 13 19 16 15: -2 13 12 16 16: 5 13 12 9 17: -3 13 5 9 18: 4 13 5 6 19: -4 13 7 6 20: 3 13 7 10 21: -5 13 14 10 22: 2 13 14 17 23: -6 13 21 17 24: 1 13 21 20 25: 5 22 21 17 26: -3 22 14 17 27: 4 22 14 15 28: -1 8 14 15 29: 6 8 14 10 30: -2 8 7 10 31: 2 18 19 23 32: -3 25 19 23 33: 4 25 19 20 34: -4 25 21 20 35: 3 25 21 24 36: -2 22 21 24 tile001: #: Type 30 60 90 1: -6 1 4 2 2: 1 1 4 3 3: -4 8 4 3 4: 3 8 4 6 5: -5 8 9 6 6: -1 5 9 10 7: 6 5 9 6 8: -2 5 4 6 9: 5 5 4 2 10: -6 5 11 7 11: 1 5 11 10 12: 2 8 9 12 13: -6 8 14 12 14: 1 8 14 13 15: -4 18 14 13 16: 3 18 14 16 17: -5 18 19 16 18: -1 15 19 20 19: 6 15 19 16 20: -2 15 14 16 21: 5 15 14 12 22: -3 15 9 12 23: 4 15 9 10 24: -4 15 11 10 25: -6 15 21 17 26: 1 15 21 20 27: 2 18 19 22 28: -6 18 24 22 29: 1 18 24 23 30: -4 27 24 23 31: 3 27 24 26 32: -2 25 24 26 33: 5 25 24 22 34: -3 25 19 22 35: 4 25 19 20 36: -4 25 21 20 triangle_neighbors_ij_plot(): Compute the three neighbors of a 30-60-90 triangle and plot them. Graphics saved as "triangle_neighbors_ij.png" triangle_neighbors_xy_plot(): Compute the three neighbors of a 30-60-90 triangle and plot them. Graphics saved as "triangle_neighbors_xy.png" triangle_xy_plot_test(): triangle_xy_plot() plots the 30-60-90 triangles constituting an Eternity object, using (x,y) coordinates. Graphics saved as "rectangle_3x3_triangles_xy.png" Graphics saved as "tile011_triangles_xy.png" vertex_plot_test(): vertex_plot() plots the vertices of an object. Graphics saved as "eternity_vertex_ij.png" Graphics saved as "eternity_vertex_xy.png" Graphics saved as "hexagon_vertex_xy.png" Graphics saved as "hexagon3_vertex_xy.png" Graphics saved as "rectangle_vertex_xy.png" Graphics saved as "tile001_vertex_xy.png" vertex_plot_test(): Normal end of execution. vertex_xy_print_test(): vertex_xy_print() prints the vertices of an object. tile001 vertices 1 (0.000000,0.000000) 2 (3.000000,0.000000) 3 (2.500000,0.866025) 4 (1.750000,1.299038) 5 (1.500000,0.866025) 6 (0.750000,1.299038) vertex_xy_print_test(): Normal end of execution. word_area_test(): word_area() counts the elemental triangles contained in a polygon defined by a boundary word. eternity area = 7524 (should be 209 * 36 = 7524 hexagon area = 36 Eternity tiles should all have area 36 Eternity tile #1 = 36 Eternity tile #2 = 36 Eternity tile #3 = 36 Eternity tile #4 = 36 Eternity tile #5 = 36 Eternity tile #6 = 36 Eternity tile #7 = 36 Eternity tile #8 = 36 Eternity tile #9 = 36 Eternity tile #10 = 36 Eternity tile #11 = 36 Eternity tile #12 = 36 Eternity tile #13 = 36 Eternity tile #14 = 36 Eternity tile #15 = 36 Eternity tile #16 = 36 Eternity tile #17 = 36 Eternity tile #18 = 36 Eternity tile #19 = 36 Eternity tile #20 = 36 Eternity tile #21 = 36 Eternity tile #22 = 36 Eternity tile #23 = 36 Eternity tile #24 = 36 Eternity tile #25 = 36 Eternity tile #26 = 36 Eternity tile #27 = 36 Eternity tile #28 = 36 Eternity tile #29 = 36 Eternity tile #30 = 36 Eternity tile #31 = 36 Eternity tile #32 = 36 Eternity tile #33 = 36 Eternity tile #34 = 36 Eternity tile #35 = 36 Eternity tile #36 = 36 Eternity tile #37 = 36 Eternity tile #38 = 36 Eternity tile #39 = 36 Eternity tile #40 = 36 Eternity tile #41 = 36 Eternity tile #42 = 36 Eternity tile #43 = 36 Eternity tile #44 = 36 Eternity tile #45 = 36 Eternity tile #46 = 36 Eternity tile #47 = 36 Eternity tile #48 = 36 Eternity tile #49 = 36 Eternity tile #50 = 36 Eternity tile #51 = 36 Eternity tile #52 = 36 Eternity tile #53 = 36 Eternity tile #54 = 36 Eternity tile #55 = 36 Eternity tile #56 = 36 Eternity tile #57 = 36 Eternity tile #58 = 36 Eternity tile #59 = 36 Eternity tile #60 = 36 Eternity tile #61 = 36 Eternity tile #62 = 36 Eternity tile #63 = 36 Eternity tile #64 = 36 Eternity tile #65 = 36 Eternity tile #66 = 36 Eternity tile #67 = 36 Eternity tile #68 = 36 Eternity tile #69 = 36 Eternity tile #70 = 36 Eternity tile #71 = 36 Eternity tile #72 = 36 Eternity tile #73 = 36 Eternity tile #74 = 36 Eternity tile #75 = 36 Eternity tile #76 = 36 Eternity tile #77 = 36 Eternity tile #78 = 36 Eternity tile #79 = 36 Eternity tile #80 = 36 Eternity tile #81 = 36 Eternity tile #82 = 36 Eternity tile #83 = 36 Eternity tile #84 = 36 Eternity tile #85 = 36 Eternity tile #86 = 36 Eternity tile #87 = 36 Eternity tile #88 = 36 Eternity tile #89 = 36 Eternity tile #90 = 36 Eternity tile #91 = 36 Eternity tile #92 = 36 Eternity tile #93 = 36 Eternity tile #94 = 36 Eternity tile #95 = 36 Eternity tile #96 = 36 Eternity tile #97 = 36 Eternity tile #98 = 36 Eternity tile #99 = 36 Eternity tile #100 = 36 Eternity tile #101 = 36 Eternity tile #102 = 36 Eternity tile #103 = 36 Eternity tile #104 = 36 Eternity tile #105 = 36 Eternity tile #106 = 36 Eternity tile #107 = 36 Eternity tile #108 = 36 Eternity tile #109 = 36 Eternity tile #110 = 36 Eternity tile #111 = 36 Eternity tile #112 = 36 Eternity tile #113 = 36 Eternity tile #114 = 36 Eternity tile #115 = 36 Eternity tile #116 = 36 Eternity tile #117 = 36 Eternity tile #118 = 36 Eternity tile #119 = 36 Eternity tile #120 = 36 Eternity tile #121 = 36 Eternity tile #122 = 36 Eternity tile #123 = 36 Eternity tile #124 = 36 Eternity tile #125 = 36 Eternity tile #126 = 36 Eternity tile #127 = 36 Eternity tile #128 = 36 Eternity tile #129 = 36 Eternity tile #130 = 36 Eternity tile #131 = 36 Eternity tile #132 = 36 Eternity tile #133 = 36 Eternity tile #134 = 36 Eternity tile #135 = 36 Eternity tile #136 = 36 Eternity tile #137 = 36 Eternity tile #138 = 36 Eternity tile #139 = 36 Eternity tile #140 = 36 Eternity tile #141 = 36 Eternity tile #142 = 36 Eternity tile #143 = 36 Eternity tile #144 = 36 Eternity tile #145 = 36 Eternity tile #146 = 36 Eternity tile #147 = 36 Eternity tile #148 = 36 Eternity tile #149 = 36 Eternity tile #150 = 36 Eternity tile #151 = 36 Eternity tile #152 = 36 Eternity tile #153 = 36 Eternity tile #154 = 36 Eternity tile #155 = 36 Eternity tile #156 = 36 Eternity tile #157 = 36 Eternity tile #158 = 36 Eternity tile #159 = 36 Eternity tile #160 = 36 Eternity tile #161 = 36 Eternity tile #162 = 36 Eternity tile #163 = 36 Eternity tile #164 = 36 Eternity tile #165 = 36 Eternity tile #166 = 36 Eternity tile #167 = 36 Eternity tile #168 = 36 Eternity tile #169 = 36 Eternity tile #170 = 36 Eternity tile #171 = 36 Eternity tile #172 = 36 Eternity tile #173 = 36 Eternity tile #174 = 36 Eternity tile #175 = 36 Eternity tile #176 = 36 Eternity tile #177 = 36 Eternity tile #178 = 36 Eternity tile #179 = 36 Eternity tile #180 = 36 Eternity tile #181 = 36 Eternity tile #182 = 36 Eternity tile #183 = 36 Eternity tile #184 = 36 Eternity tile #185 = 36 Eternity tile #186 = 36 Eternity tile #187 = 36 Eternity tile #188 = 36 Eternity tile #189 = 36 Eternity tile #190 = 36 Eternity tile #191 = 36 Eternity tile #192 = 36 Eternity tile #193 = 36 Eternity tile #194 = 36 Eternity tile #195 = 36 Eternity tile #196 = 36 Eternity tile #197 = 36 Eternity tile #198 = 36 Eternity tile #199 = 36 Eternity tile #200 = 36 Eternity tile #201 = 36 Eternity tile #202 = 36 Eternity tile #203 = 36 Eternity tile #204 = 36 Eternity tile #205 = 36 Eternity tile #206 = 36 Eternity tile #207 = 36 Eternity tile #208 = 36 Eternity tile #209 = 36 Trinity tiles should all have area 36 Trinity tile #210 = 36 Trinity tile #211 = 36 Trinity tile #212 = 36 Trinity tile #213 = 36 Serenity tiles should all have area 36 Serenity tile #214 = 36 Serenity tile #215 = 36 Serenity tile #216 = 36 Serenity tile #217 = 36 Serenity tile #218 = 36 Serenity tile #219 = 36 Serenity tile #220 = 36 Serenity tile #221 = 36 word_parity_test(): word_parity() takes the boundary word of an object and computes its parity. Index Parity 1 -2 2 -2 3 0 4 0 5 2 6 2 7 -2 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 2 18 2 19 0 20 0 21 -2 22 0 23 -2 24 0 25 0 26 -2 27 0 28 -2 29 0 30 -2 31 0 32 -2 33 0 34 -2 35 0 36 0 37 2 38 2 39 0 40 0 41 0 42 0 43 0 44 -2 45 0 46 2 47 -2 48 0 49 0 50 -2 51 0 52 -2 53 -2 54 0 55 -2 56 0 57 0 58 0 59 2 60 2 61 0 62 -2 63 0 64 -2 65 2 66 0 67 -4 68 -2 69 0 70 -2 71 -2 72 0 73 0 74 0 75 2 76 -2 77 2 78 2 79 2 80 2 81 -4 82 -2 83 -2 84 2 85 -2 86 0 87 0 88 2 89 0 90 2 91 0 92 2 93 0 94 0 95 0 96 2 97 -2 98 4 99 2 100 0 101 -2 102 -2 103 -4 104 -2 105 -2 106 0 107 2 108 0 109 2 110 0 111 0 112 -2 113 0 114 -2 115 2 116 0 117 2 118 -2 119 -2 120 0 121 -2 122 0 123 2 124 0 125 -2 126 -2 127 0 128 2 129 0 130 -4 131 -2 132 -2 133 -2 134 0 135 0 136 2 137 2 138 -2 139 -2 140 0 141 0 142 2 143 -2 144 2 145 0 146 2 147 -2 148 0 149 -4 150 -2 151 0 152 2 153 0 154 2 155 0 156 2 157 0 158 2 159 0 160 0 161 2 162 2 163 2 164 2 165 -2 166 0 167 0 168 2 169 -2 170 -2 171 0 172 0 173 0 174 2 175 2 176 2 177 4 178 0 179 2 180 0 181 -2 182 2 183 4 184 0 185 2 186 -2 187 0 188 -2 189 0 190 2 191 0 192 2 193 2 194 0 195 -2 196 -2 197 0 198 -2 199 0 200 -2 201 -2 202 0 203 2 204 2 205 2 206 2 207 -2 208 -2 209 0 word_to_parity_test(): Normal end of execution. word_print_test(): word_print() prints a boundary word for an object. Word for the Eternity grid boundary word: DddDDddDEEEEEEEEEEEEEEFffFFffFFffFFffFGGGGGGGGGGGG GGHhhHHhhHHhhHHhhHIIIIIIIIIIIIIIJjjJJjjJJjjJJjjJKK KKKKKKKKKKKKLllLLllLLllLLllLAAAAAAAAAAAAAABbbBBbbB BbbBBbbBCCCCCCCCCCCCCCDddDDddD base point : [ 0, 0 ] Word for tile001 boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] word_print_test(): Normal end of execution. word_range_ij_test(): word_range_ij() takes the boundary word of an object, and returns the minimum and maximum (i,j) coordinates. Object imin imax jmin jmax eternity -104 0 -90 90 hexagon 0 8 0 12 hexagon3 -6 18 0 36 rectangle 4x5 0 16 0 30 tile001 0 12 0 9 word_range_ij_test(): Normal end of execution. word_range_xy_test(): word_range_xy() takes the boundary word of an object, and returns the minimum and maximum x and y coordinates. Object xmin xmax ymin ymax eternity -26.00 0.00 -12.99 12.99 hexagon 1.50 3.50 0.00 1.73 hexagon3 -1.50 4.50 0.00 5.20 rectangle 4x5 0.00 4.00 0.00 4.33 tile001 0.00 3.00 0.00 1.30 word_range_xy_test(): Normal end of execution. word_reflect_xy_test(): word_reflect_xy() takes the boundary word of an object and a multiple of 30 degrees, and returns the boundary word of the object after reflection about that angle. reflection none: tile001: boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_none.png" reflect across 0 angle: tile001 boundary word: KKKbBKbBCCGGGGGG base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_000.png" reflect across 30 angle: tile001 boundary word: AAAdDAdDEEIIIIII base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_030.png" reflect across 60 angle: tile001 boundary word: CCCfFCfFGGKKKKKK base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_060.png" reflect across 90 angle: tile001 boundary word: EEEhHEhHIIAAAAAA base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_090.png" reflect across 120 angle: tile001 boundary word: GGGjJGjJKKCCCCCC base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_120.png" reflect across 150 angle: tile001 boundary word: IIIlLIlLAAEEEEEE base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_150.png" reflect across 180 angle: tile001 boundary word: KKKbBKbBCCGGGGGG base point : [ 0, 0 ] Graphics saved as "tile001_reflect_xy_180.png" word_reflect_xy_test(): Normal end of execution. word_representative_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 word_representative() returns the representative for a boundary word. boundary word representative AAKbBCCGGCfFIIII AAKbBCCGGCfFIIII fFIIIIAAKbBCCGGC AAKbBCCGGCfFIIII FIIIIAAKbBCCGGCf AAKbBCCGGCfFIIII AKbBCCGGCfFIIIIA AAKbBCCGGCfFIIII word_reverse_test(): word_reverse() takes the boundary word of an object and produces the boundary word corresponding to a traversal of the same object in the reverse direction. reversal none: tile001 boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] Graphics saved as "tile001_reversal_none.png" reversal: tile001: boundary word: CCClLClLKKGGGGGG base point : [ 0, 0 ] Graphics saved as "tile001_reversal.png" word_reverse_test(): Normal end of execution. word_rotate_xy_test(): word_rotate_xy() takes the boundary word of an object and a multiplier R of 60 degrees, and returns the boundary word of the object after rotation by 60*R degrees. tile001: rotate xy 0 degrees boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] Graphics saved as "tile001_rotate_xy_000.png" tile001: rotate xy 60 degrees boundary word: CCCCCCGGHhKHhKKK base point : [ 0, 0 ] Graphics saved as "tile001_rotate_xy_060.png" tile001: rotate xy 120 degrees boundary word: EEEEEEIIJjAJjAAA base point : [ 0, 0 ] Graphics saved as "tile001_rotate_xy_120.png" tile001: rotate xy 180 degrees boundary word: GGGGGGKKLlCLlCCC base point : [ 0, 0 ] Graphics saved as "tile001_rotate_xy_180.png" tile001: rotate xy 240 degrees boundary word: IIIIIIAABbEBbEEE base point : [ 0, 0 ] Graphics saved as "tile001_rotate_xy_240.png" tile001: rotate xy 300 degrees boundary word: KKKKKKCCDdGDdGGG base point : [ 0, 0 ] Graphics saved as "tile001_rotate_xy_300.png" word_rotate_xy_test(): Normal end of execution. word_to_edge_ij_test(): word_to_edge_ij() takes the boundary word of an object and computes the (i,j) coordinates of the edge nodes. Graphics saved as "eternity_edge_ij.png" Graphics saved as "hexagon_edge_ij.png" Graphics saved as "hexagon3_edge_ij.png" Graphics saved as "rectangle_4x5_edge_ij.png" Graphics saved as "tile001_edge_ij.png" word_to_edge_ij_test(): Normal end of execution. word_to_edge_xy_test(): word_to_edge_xy() takes the boundary word of an object and computes the (x,y) coordinates of the edge nodes. Graphics saved as "eternity_edge_xy.png" Graphics saved as "hexagon_edge_xy.png" Graphics saved as "hexagon3_edge_xy.png" Graphics saved as "rectangle_4x5_edge_xy.png" Boundary word for tile001: boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] Graphics saved as "tile001_edge_xy.png" word_to_edge_xy_test(): Normal end of execution. word_to_vertex_xy_test(): word_to_vertex_xy() takes the boundary word of an object and computes the (x,y) coordinates of the vertices. Boundary word for tile001: boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] Boundary vertex coordinates 0 0 3.0000 0 2.5000 0.8660 1.7500 1.2990 1.5000 0.8660 0.7500 1.2990 word_to_vertex_xy_test(): Normal end of execution. word_translate_test(): word_translate() takes the boundary word of an object and a shift vector S, and returns the boundary word of the object after translation by S. Boundary word for tile001: boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] After shift by [2;5]: boundary word: AAAAAAEEFfIFfIII base point : [ 2, 5 ] word_translate_test(): Normal end of execution. eternity_test(): Normal end of execution. 07-Jan-2022 19:17:39