Expand description

A library for handling hex coordinates.

Massive credit to Hexagonal Grids from Red Blob Games.

OffsetDoubledAxialCube
Pointy Rotationevenr, oddrdoublewidthaxialcube
Flat Rotationevenq, oddqdoubleheight
Other Rotationsnoyes
Vector operations (add, subtract, scale)noyesyesyes
Array storagerectangularno*rhombus*no*
Hash storageany shapeany shape
Hexagonal symmetrynononoyes
Easy algorithmsfewsomemostmost

The article notes:

My recommendation: if you are only going to use non-rotated rectangular maps, consider the doubled or offset system that matches your map orientation. For maps with Rotation, or non-rectangularly shaped maps, use axial/cube. Either choose to store the s coordinate (cube), or calculate it when needed as -q-r (axial).

Structs

Enums

This is arguably excessively explicit, but I want to specify when passing this parameter it relates to the columns being even or odd.

A direction in sixths.

Double coordinate variants.

Offset coordinate variants.

A clockwise rotation in sixths.

This is arguably excessively explicit, but I want to specify when passing this parameter it relates to the rows being even or odd.