boundary_word_equilateral
    
    
    
      boundary_word_equilateral,
      a MATLAB code which
      describes the outline of an object on a grid of equilateral triangles,
      using a string of symbols that represent the sequence of steps
      tracing out the boundary.
    
    
      Objects constructed by connecting congruent equilateral triangles
      are known as polyiamonds.
    
    
      Licensing:
    
    
      The information on this web page is distributed under the MIT license.
    
    
      Languages:
    
    
      boundary_word_equilateral is available in
      a MATLAB version and
      an Octave version and
      a Python version.
    
    
      Related Data and Programs:
    
    
      
      boundary_word_equilateral_test
    
    
      
      boundary_word_drafter,
      a MATLAB code which
      describes the outline of an object on a grid of drafters,
      or 30-60-90 triangles, using a string of symbols that represent 
      the sequence of steps tracing out the boundary.  
    
    
      
      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_right,
      a MATLAB code which
      describes the outline of an object on a grid of isoceles right triangles,
      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.
    
    
      
      polyiamonds,
      a MATLAB code which
      works with polyiamonds, simple shapes constructed by edgewise
      connections of congruent equilateral triangles.
    
    
      Reference:
    
    
      
        - 
          Martin Gardner,
 
          Mathematical Games: 
          On Polyiamonds: Shapes That are Made Out of Equilateral Triangles,
          Scientific American,
          Volume 211, December 1964.
         
        - 
          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
         
        - 
          Thomas O'Beirne,
          Pentominoes and Hexiamonds,
          New Scientist,
          Volume 12, pages 379-380, 1961.
         
        - 
          Torbijn,
          Polyiamonds,
          Journal of Recreational Mathematics,
          Volume 2, pages 216-227, 1969.
         
      
    
    
      Source code:
    
    
      
        - 
          
          boolean_to_string.m,
          given a boolean value,
          returns the character vector 'True' or 'False'.
        
 
        - 
          
          gort_boundary.m,
          returns the boundary word 
          of the Gort polyiamond.
        
 
        - 
          
          boundary_hexiamond.m,
          returns the boundary word 
          for a given hexiamond.
        
 
        - 
          
          boundary_is_legal.m,
          given the boundary word of a polyiamond,
          determines if it is legal.
        
 
        - 
          
          boundary_plot.m,
          given the boundary word of a polyiamond,
          creates a plot.
        
 
        - 
          
          boundary_print.m,
          given the boundary word of a polyiamond,
          prints it.
        
 
        - 
          
          boundary_range.m,
          given the boundary word of a polyiamond, 
          returns its range in the I and J directions.
        
 
        - 
          
          boundary_reflect.m,
          given the boundary word of a polyiamond, 
          returns the boundary word of the reflected polyiamond.
        
 
        - 
          
          boundary_representative.m,
          returns the representative for a boundary word, 
          the lexically first member of the equivalence class.
        
 
        - 
          
          boundary_rotate.m,
          given the boundary word of a polyiamond,
          rotates it through a multiple of 60 degrees.
        
 
        - 
          
          boundary_snap.m,
          given the boundary word of a polyiamond,
          "snaps" it so its minimum I and J node coordinates are 0.
        
 
        - 
          
          boundary_sort.m,
          given the boundary word of a polyiamond,
          returns a sorted version of the boundary word.
        
 
        - 
          
          boundary_tiny.m,
          returns the boundary word
          of the tiny polyiamond.
        
 
        - 
          
          boundary_to_edge.m,
          given the boundary word of a shape,
          converts it to a sequence of nodes that bound
          the shape.
        
 
        - 
          
          boundary_to_triangle.m,
          given the boundary word of a polyiamond,
          converts it to a triangle list.
        
 
        - 
          
          boundary_to_vertex.m,
          given the boundary word of a polyiamond,
          converts it to a vertex list.
        
 
        - 
          
          boundary_translate.m,
          given the boundary word of a polyiamond, 
          returns the boundary word of the translated polyiamond.
        
 
        - 
          
          chvec_lt.m,
          is TRUE if c1
        
- 
          
          grid_plot.m,
          plots a parallelogram grid divided into equilateral triangles.
        
 
        - 
          
          ij_to_xy.m,
          given the (i,j) parallelogram coordinates of a node,
          returns the (x,y) Cartesian coordinates.
        
 
        - 
          
          ijk_fill.m,
          given (i,j,k) parallelogram triangle coordinates,
          plots a filled triangle on the current figure.
        
 
        - 
          
          ijk_to_xy.m,
          given (i,j,k) parallelogram triangle coordinates,
          returns the (x,y) Cartesian point coordinates of the 
          nodes that are vertices.
        
 
        - 
          
          is_octave.m,
          is TRUE if Octave is executing.
        
 
        - 
          
          name_hexiamond.m,
          given an index between 1 and 12 of a hexiamond, 
          returns the corresponding name.
        
 
        - 
          
          s_escape_tex.m,
          de-escapes TeX escape sequences.
        
 
        - 
          
          vertex_contains_ijk.m,
          given the vertex list of a polyiamond,
          determines if an IJK triangle is contained inside the polyiamond.
        
 
        - 
          
          vertex_contains_point.m,
          given the vertex list of a polyiamond,
          determines if a point is contained inside the polyiamond.
        
 
        - 
          
          vertex_plot.m,
          given the vertex list of a polyiamond,
          plots the polyiamond.
        
 
        - 
          
          vertex_to_triangle.m,
          given the vertex list of a polyiamond,
          produces the corresponding triangle list.
        
 
       
    
    
    
      Last revised on 19 June 2024.