Version: 4.x (alpha)

# 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`.