Skip to content

akhra/HexCoord

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cfd4b39 · Sep 14, 2014

History

11 Commits
Feb 9, 2014
Feb 9, 2014
May 30, 2014
May 30, 2014
Feb 9, 2014
Sep 14, 2014

Repository files navigation

HexCoord implements hexagonal grid geometry in C#. The main fork utilizes Unity's Vector2 and Vector3 for position information, but is otherwise platform-agnostic; porting to other C# environments should be trivial.

This is an implementation of Amit Patel's constrained cubic axial coordinates. Briefly, it uses two axes labeled q and r. The q axis is equivalent to the x axis of a Cartesian plane; but the r axis is 60 degrees from q, rather than the 90 degrees of a Cartesian y axis. HexCoord deviates from Amit's reference example in one way: the positive r axis extends up and right, rather than down and right.

For performance reasons, HexCoord is a struct. Because Unity did not serialize structs prior to version 4.5.0, there is also a serializable HexCoordinate class which easily converts to and from HexCoord. Use the class where serialization is needed in older Unity versions, and the struct everywhere else.

####Built-in operations include:

  • Conversion to and from Unity positions.
  • Conversion to and from offset-Cartesian coordinates.
  • Hexagonal grid polar coordinates (radius, position on ring).
  • Conversion to and from real polar coordinates and numerous related functions.
  • Indexed access to the six adjacent hexagons.
  • Indexed corners, including Unity position of corners.
  • Rotate through sextants (1/6 circle)
  • Mirror across the three diagonals.
  • Hexagonal Manhattan (grid-step) distance.
  • Vector addition, subtraction and scaling.
  • Fast hashing with no collisions until coordinates exceed 15 bits + sign.

HexCoord is a key component of the non-free HexKit package, and is fully described in HexKit's documentation. Discussion and modest support at http://www.settworks.com/forum/hexkit

About

Hexagon Grid Coordinate System for Unity/C#

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages