A regular arrangement of octagonal tiles.
Octagons won't tile a regular plane (there will be diamond-shaped
gaps between the tiles), but they will tile a hyperbolic plane.
(Alternatively, you can think of these as squares on a board game
where diagonal moves are allowed.)
The userguide, with illustrations, is available at
https://github.com/mhwombat/grid/wiki.
Also see Math.Geometry.Grid for examples of how to use this class.

rectOctGrid r c produces a rectangular grid with r rows
and c columns, using octagonal tiles. If r and c are both
nonnegative, the resulting grid will have r*c tiles. Otherwise,
the resulting grid will be null and the list of indices will be
null.

torOctGrid r c returns a toroidal grid with r
rows and c columns, using octagonal tiles. If r and c are
both nonnegative, the resulting grid will have r*c tiles. Otherwise,
the resulting grid will be null and the list of indices will be null.