27-May-2021 19:38:37 eternity_test(): MATLAB/Octave version 4.2.2 Test eternity(). 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. 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. 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 some triangles in an Eternity 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 4.2.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. 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. 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 trinity: #: Type 30 60 90 1: 2 1 2 5 2: -6 1 9 5 3: 1 1 9 8 4: -4 18 9 8 5: 3 18 9 15 6: -5 18 19 15 7: -1 10 19 20 8: 6 10 19 15 9: -2 10 9 15 10: 5 10 9 5 11: -3 10 2 5 12: 4 10 2 3 13: -5 10 11 6 14: 2 10 11 16 15: -6 10 21 16 16: 1 10 21 20 17: 5 22 21 16 18: -3 22 11 16 19: 4 22 11 12 20: -1 4 11 12 21: 6 4 11 6 22: -6 4 13 7 23: 1 4 13 12 24: -4 22 13 12 25: 3 22 13 17 26: -5 22 23 17 27: -1 14 23 24 28: 6 14 23 17 29: -2 14 13 17 30: 5 14 13 7 31: 2 18 19 25 32: -6 18 29 25 33: 1 18 29 28 34: -4 38 29 28 35: 3 38 29 35 36: -5 38 39 35 37: -1 30 39 40 38: 6 30 39 35 39: -2 30 29 35 40: 5 30 29 25 41: -3 30 19 25 42: 4 30 19 20 43: -4 30 21 20 44: 3 30 21 26 45: -5 30 31 26 46: 2 30 31 36 47: -6 30 41 36 48: 1 30 41 40 49: 5 42 41 36 50: -3 42 31 36 51: 4 42 31 32 52: -1 22 31 32 53: 6 22 31 26 54: -2 22 21 26 55: 2 22 23 27 56: -6 22 33 27 57: 1 22 33 32 58: -4 42 33 32 59: 3 42 33 37 60: -5 42 43 37 61: -1 34 43 44 62: 6 34 43 37 63: -2 34 33 37 64: 5 34 33 27 65: -3 34 23 27 66: 4 34 23 24 67: 2 38 39 45 68: -6 38 49 45 69: 1 38 49 48 70: -4 59 49 48 71: 3 59 49 55 72: -5 59 60 55 73: -1 50 60 61 74: 6 50 60 55 75: -2 50 49 55 76: 5 50 49 45 77: -3 50 39 45 78: 4 50 39 40 79: -4 50 41 40 80: 3 50 41 46 81: -5 50 51 46 82: 2 50 51 56 83: -6 50 62 56 84: 1 50 62 61 85: 5 63 62 56 86: -3 63 51 56 87: 4 63 51 52 88: -1 42 51 52 89: 6 42 51 46 90: -2 42 41 46 91: 2 42 43 47 92: -6 42 53 47 93: 1 42 53 52 94: -4 63 53 52 95: 3 63 53 57 96: -5 63 64 57 97: -1 54 64 65 98: 6 54 64 57 99: -2 54 53 57 100: 5 54 53 47 101: -3 54 43 47 102: 4 54 43 44 103: -6 54 66 58 104: 1 54 66 65 105: 5 67 66 58 106: 2 59 60 68 107: -6 59 72 68 108: -5 81 82 78 109: -1 73 82 83 110: 6 73 82 78 111: -2 73 72 78 112: 5 73 72 68 113: -3 73 60 68 114: 4 73 60 61 115: -4 73 62 61 116: 3 73 62 69 117: -5 73 74 69 118: 2 73 74 79 119: -6 73 84 79 120: 1 73 84 83 121: 5 85 84 79 122: -3 85 74 79 123: 4 85 74 75 124: -1 63 74 75 125: 6 63 74 69 126: -2 63 62 69 127: 2 63 64 70 128: -6 63 76 70 129: 1 63 76 75 130: -4 85 76 75 131: 3 85 76 80 132: -2 77 76 80 133: 5 77 76 70 134: -3 77 64 70 135: 4 77 64 65 136: -4 77 66 65 137: 3 77 66 71 138: -2 67 66 71 139: 2 81 82 86 140: -3 88 82 86 141: 4 88 82 83 142: -4 88 84 83 143: 3 88 84 87 144: -2 85 84 87 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_plot_test(): triangle_plot() plots the 30-60-90 triangles constituting an Eternity object. Graphics saved as "rectangle_3x3_triangles.png" Graphics saved as "hexagon_triangles.png" Graphics saved as "trinity_triangles.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_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_none.png" reflect across 0 angle: tile001 boundary word: KKKBbKBbCCGGGGGG base point : [ 0, 0 ] Graphics saved as "tile001_reflect_000.png" reflect across 30 angle: tile001 boundary word: AAADdADdEEIIIIII base point : [ 0, 0 ] Graphics saved as "tile001_reflect_030.png" reflect across 60 angle: tile001 boundary word: CCCFfCFfGGKKKKKK base point : [ 0, 0 ] Graphics saved as "tile001_reflect_060.png" reflect across 90 angle: tile001 boundary word: EEEHhEHhIIAAAAAA base point : [ 0, 0 ] Graphics saved as "tile001_reflect_090.png" reflect across 120 angle: tile001 boundary word: GGGJjGJjKKCCCCCC base point : [ 0, 0 ] Graphics saved as "tile001_reflect_120.png" reflect across 150 angle: tile001 boundary word: IIILlILlAAEEEEEE base point : [ 0, 0 ] Graphics saved as "tile001_reflect_150.png" reflect across 180 angle: tile001 boundary word: KKKBbKBbCCGGGGGG base point : [ 0, 0 ] Graphics saved as "tile001_reflect_180.png" word_reflect_xy_test(): Normal end of execution. word_representative_test(): MATLAB/Octave version 4.2.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. rotate 0 degrees: tile001 boundary word: AAAAAAEEFfIFfIII base point : [ 0, 0 ] Graphics saved as "tile001_rotate_000.png" rotate 60 degrees: tile001 boundary word: CCCCCCGGHhKHhKKK base point : [ 0, 0 ] Graphics saved as "tile001_rotate_060.png" rotate 120 degrees: tile001 boundary word: EEEEEEIIJjAJjAAA base point : [ 0, 0 ] Graphics saved as "tile001_rotate_120.png" rotate 180 degrees: tile001 boundary word: GGGGGGKKLlCLlCCC base point : [ 0, 0 ] Graphics saved as "tile001_rotate_180.png" rotate 240 degrees: tile001 boundary word: IIIIIIAABbEBbEEE base point : [ 0, 0 ] Graphics saved as "tile001_rotate_240.png" rotate 300 degrees: tile001 boundary word: KKKKKKCCDdGDdGGG base point : [ 0, 0 ] Graphics saved as "tile001_rotate_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: Col: 1 2 Row 1 : 0 0 2 : 3 0 3 : 2.5 0.866025 4 : 1.75 1.29904 5 : 1.5 0.866025 6 : 0.75 1.29904 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. 27-May-2021 19:39:56