boundary_word_drafter
boundary_word_drafter,
a MATLAB code which
describes the outline of an object on a grid of drafters,
or 306090 triangles, using a string of symbols that represent
the sequence of steps tracing out the boundary.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
boundary_word_drafter is available in
a MATLAB version.
Related Data and Programs:
boundary_word_drafter_test
boat,
a MATLAB code which
considers the whale tiling puzzle, a smaller version of the eternity
puzzle. The whale puzzle specifies a region R composed of 756
306090 triangles, and a set of 21 "tiles", each consisting of 36
306090 triangles, and seeks an arrangement of the tiles that
exactly covers the region.
boundary_word_hexagon,
a MATLAB code which
describes the outline of an object on a grid of hexagons,
using a string of symbols that represent the sequence of steps
tracing out the boundary.
boundary_word_square,
a MATLAB code which
describes the outline of an object on a grid of squares,
using a string of symbols that represent the sequence of steps
tracing out the boundary.
boundary_word_triangle,
a MATLAB code which
describes the outline of an object on a grid of triangles,
using a string of symbols that represent the sequence of steps
tracing out the boundary.
eternity,
a MATLAB code which
considers the eternity puzzle, which considers an irregular dodecagon
shape that is to be tiled by 209 distinct pieces, each formed by 36
contiguous 306090 triangles, known as polydrafters.
eternity_tile,
a MATLAB code which
considers the individual tiles of the eternity puzzle,
209 distinct pieces, each formed by 36
contiguous 306090 triangles, known as polydrafters.
pram,
a MATLAB code which
considers the pram puzzle, a smaller version of the eternity
puzzle. The pram puzzle specifies a region R composed of 2304
306090 triangles, and a set of 64 "tiles",
consisting of 36 306090 triangles, and seeks an arrangement
of the tiles that exactly covers the region.
serenity,
a MATLAB code which
considers the serenity puzzle, a smaller version of the eternity
puzzle. The serenity puzzle specifies a dodecagonal region R
composed of 288 306090 triangles, and a set of 8 "tiles",
each consisting of 36 306090 triangles, and seeks an arrangement
of the tiles that exactly covers the region.
trinity,
a MATLAB code which
considers the trinity puzzle, a smaller version of the eternity
puzzle. The trinity puzzle specifies a region R composed of 144
306090 triangles, and a set of 4 "tiles", T1, T2, T3 and T4,
each consisting of 36 306090 triangles, and seeks an arrangement
of the four tiles that exactly covers the region.
whale,
a MATLAB code which
considers the whale tiling puzzle, a smaller version of the eternity
puzzle. The whale puzzle specifies a region R composed of 288
306090 triangles, and a set of 8 "tiles", each consisting of 36
306090 triangles, and seeks an arrangement of the tiles that
exactly covers the region.
Reference:

Marcus Garvie, John Burkardt,
A new mathematical model for tiling finite regions of the plane
with polyominoes,
Contributions to Discrete Mathematics,
Volume 15, Number 2, July 2020.

Solomon Golomb,
Polyominoes: Puzzles, Patterns, Problems, and Packings,
Princeton University Press, 1996,
ISBN: 9780691024448

Ed Pegg,
Polyform Patterns,
in Tribute to a Mathemagician,
Barry Cipra, Erik Demaine, Martin Demaine, editors,
pages 119125, A K Peters, 2005.

Mark Wainwright,
Prize specimens,
Plus magazine,
01 January 2001,
https://plus.maths.org/content/prizespecimens
Source code:

ch_wrap.m,
forces a character to lie between given limits by wrapping.

edge_plot.m,
plots the edge nodes
of an object.

eternity_grid_word.m,
returns the boundary word
for the Eternity grid.

eternity_tile_word.m,
the boundary word for any tile, given its index number.

hexagon_word.m,
boundary word
for the hexagon grid.

hexagon3_word.m,
returns the boundary word
for the hexagon3 grid.

hexagon4_vertex_xy.m,
returns (x,y) coordinates of the vertices
for the hexagon4 grid.

i4_wrap.m,
forces an integer to lie between given limits by wrapping.

is_octave.m,
is TRUE if the function is called by Octave.

polygon_contains_point.m,
is TRUE if a polygon contains a point.

rectangle_triangle_k.m,
returns the indexes (k) of the three nodes forming each triangle
for the NX by NY rectangle grid.

rectangle_word.m,
returns the boundary word
for the NX by NY rectangle grid.

s_substitute.m,
substitutes characters in a string.

triangle_k.m,
returns the node indices of the vertices of the
triangles contained in an object.

vertex_plot.m,
plots the vertices that define the polygon bounding
an object.

word_parity.m,
determines the parity of a shape.

word_print.m,
prints a boundary word of a shape.

word_range_ij.m,
returns the horizontal and vertical limits of an object, given
its boundary word, using the (i,j) coordinate system.

word_range_xy.m,
returns the horizontal and vertical limits of an object, given
its boundary word, using the (x,y) coordinate system.

word_reflect_ij.m,
returns the boundary word for an object reflected
across the 0, 30, 60, 90, 120, or 150 degree line through
the base point, using the (i,j) coordinate system.

word_reflect_xy.m,
returns the boundary word for an object reflected
across the 0, 30, 60, 90, 120, or 150 degree line through
the base point, using the (x,y) coordinate system.

word_representative.m,
returns the representative for a boundary word, the lexically first
member of the equivalence class.

word_reverse.m,
returns the boundary word for an object when it is traversed
in the reverse direction.

word_rotate_xy.m,
returns the boundary word for a rotated object,
using the (i,j) coordinate system.

word_rotate_xy.m,
returns the boundary word for a rotated object,
using the (x,y) coordinate system.

word_to_edge_ij.m,
determines the (i,j) coordinates of edge nodes from a boundary word.

word_to_edge_xy.m,
determines the (x,y) coordinates of edge nodes from a boundary word.

word_to_vertex_ij.m,
determines the (i,j) coordinates of vertices from a boundary word.

word_to_vertex_xy.m,
determines the (x,y) coordinates of vertices from a boundary word.

word_translate.m,
returns the boundary word for a translated object.
Last revised on 17 June 2021.