Coordinate systems
The H3 Core Library uses the following coordinate systems internally.
IJK Coordinates
Discrete hexagon planar grid systems naturally have 3 coordinate axes spaced 120° apart. We refer to such a system as an ijk coordinate system, for the three coordinate axes i, j, and k. A single ijk coordinate triplet is represented in the H3 Core Library using the structure type CoordIJK
.
Using an ijk coordinate system to address hexagon grid cells provides multiple valid addresses for each cell. Normalizing an ijk address (function _ijkNormalize
) creates a unique address consisting of the minimal positive ijk components; this always results in at most two non-zero components.
FaceIJK Coordinates
The H3 Core Library centers an ijk coordinate system on each face of the icosahedron; the combination of a face number and ijk coordinates on that face's coordinate system is represented using the structure type FaceIJK
.
Each grid resolution is rotated ~19.1° relative to the next coarser resolution. The rotation alternates between counterclockwise and clockwise at each successive resolution, so that each resolution will have one of two possible orientations: Class II or Class III (using a terminology coined by R. Buckminster Fuller). The base cells, which make up resolution 0, are Class II.
Hex2d Coordinates
A Hex2d coordinate system is a cartesian coordinate system associated with a specific ijk coordinate system, where:
- the origin of the Hex2d system is centered on the origin cell of the ijk system,
- the positive x-axis of the Hex2d system is aligned with the i-axis of the ijk system, and
- 1.0 unit distance in the Hex2d system is the distance between adjacent cell centers in the ijk coordinate system.
Hex2d coordinates are represented using the structure type Vec2d
.
Local IJ Coordinates
Algorithms working with hexagons may want to refer to grid coordinates that are not interrupted by base cells or faces. These coordinates have 2 coordinate axes spaced 120° apart, with the coordinates anchored by an origin H3 index.
- local coordinates are only comparable when they have the same origin index.
- local coordinates are only valid near the origin. Pratically, this is within the same base cell or a neighboring base cell, except for pentagons.
- the coordinate space may have deleted or warped regions due to pentagon distortion.
- there may be multiple coordinates for the same index, with the same origin.
- the origin may not be at
(0, 0)
in the local coordinate space.
Local IJ coordinates are represented using the structure type CoordIJ
and an associated origin H3Index
.