Crate hex_coordinates
source · [−]Expand description
A library for handling hex coordinates.
Massive credit to Hexagonal Grids from Red Blob Games.
Offset | Doubled | Axial th> | Cube | |
---|---|---|---|---|
Pointy Rotation | evenr, oddr | doublewidth | axial | cube |
Flat Rotation | evenq, oddq | doubleheight | ||
Other Rotations | no | yes | ||
Vector operations (add, subtract, scale) | no | yes | yes | yes | tr>
Array storage | rectangular | no* | rhombus* | no* |
Hash storage | any shape | any shape | ||
Hexagonal symmetry | no | no | no | yes |
Easy algorithms | few | some | most | most |
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
CubeCoordinates
minus s
coordinate.
A wrapper to make a field immutable.
An error type for invalid CubeCoordinates
. Used for CubeCoordinates::try_div
and
CubeCoordinates::try_div_assign
.
Enums
A representation of a column being even or odd.
The axis of the three coordinate components of CubeCoordinates
.
A direction in sixths.
Double coordinate variants.
Offset coordinate variants.
A clockwise rotation in sixths.
A representation of a row being even or odd.