How do I represent a hextile/hex grid in memory?

data-structures

Solution

Amit Patel has posted an amazing page on this topic. It's so comprehensive and wonderful that it needs to be the definitive answer to this question: Hexagonal Grids

Problem

Say I'm building a board game with a hextile grid, like Settlers of Catan: Note that each vertex and edge may have an attribute (a road and settlement above). How would I make a data structure which represents this board? What are the patterns for accessing each tile's neighbors, edges and vertices?

Original source

Related problems