# Hexagonal Efficient Coordinate System

The Hexagonal Efficient Coordinate System (HECS), formerly known as Array Set Addressing (ASA), is a coordinate system for hexagonal grids that allows hexagonally sampled images to be efficiently stored and processed on digital systems. HECS represents the hexagonal grid as a set of two interleaved rectangular sub-arrays, which can be addressed by normal integer row and column coordinates and are distinguished with a single binary coordinate. Hexagonal sampling is the optimal approach for isotropically band-limited two-dimensional signals and its use provides a sampling efficiency improvement of 13.4% over rectangular sampling. The HECS system enables the use of hexagonal sampling for digital imaging applications without requiring significant additional processing to address the hexagonal array.

## Background

The advantages of sampling on a hexagonal grid instead of the standard rectangular grid for digital imaging applications include: more efficient sampling, consistent connectivity, equidistant neighboring pixels, greater angular resolution, and higher circular symmetry. Sometimes, more than one of these advantages compound together, thereby increasing the efficiency by 50% in terms of computation and storage when compared to rectangular sampling. Researchers have shown that the hexagonal grid is the optimal sampling lattice and its use provides a sampling efficiency improvement of 13.4% over rectangular sampling for isotropically band-limited two-dimensional signals. Despite all of these advantages of hexagonal sampling over rectangular sampling, application prior to the introduction of HECS was limited because of the lack of an efficient coordinate system.

## Hexagonal Efficient Coordinate System
### Description

The Hexagonal Efficient Coordinate System (HECS) is based on the idea of representing the hexagonal grid as a set of two rectangular arrays which can be individually indexed using familiar integer-valued row and column indices. The arrays are distinguished using a single binary coordinate so that a full address for any point on the hexagonal grid is uniquely represented by three coordinates.
       $(a,r,c)\in \{0,1\}\times \mathbb {Z} \times \mathbb {Z}$
where the coordinates represent the array, row, and column, respectively. The hexagonal grid is separated into rectangular arrays by taking every other row as one array and the remaining rows as the other array, as shown in the figure.

### Nearest neighbors

The addresses of the nearest neighbors of a pixel (or grid point) are easily determined by simple expressions which are functions of the pixel's coordinates, as shown.

### Convert to Cartesian

Converting coordinates in HECS to their Cartesian counterparts is done with a simple matrix multiplication
    ${\begin{bmatrix}x\\y\end{bmatrix}}={\begin{bmatrix}{\frac {1}{2}}&0&1\\{\frac {\sqrt {3}}{2}}&{\sqrt {3}}&0\end{bmatrix}}{\begin{bmatrix}a\\r\\c\end{bmatrix}}={\begin{bmatrix}{\frac {a}{2}}+c\\({\sqrt {3}})({\frac {a}{2}}+r)\end{bmatrix}}.$

### Operators
#### Preliminaries

Let the set of all possible HECS addresses be ${\text{HECS}}=\{0,1\}\times \mathbb {Z} \times \mathbb {Z} .$
    $\mathbf {p} _{i}={\begin{bmatrix}a_{i}\\r_{i}\\c_{i}\end{bmatrix}}\in {\text{HECS}}.$
    $\mathbf {p} ={\begin{bmatrix}a\\r\\c\end{bmatrix}}\in {\text{HECS}}.$
    $k\in \mathbb {N} .$

#### Addition

A binary addition operator $({\text{HECS}},+)$ has been defined as
    $\mathbf {p} _{1}+\mathbf {p} _{2}={\begin{bmatrix}a_{1}\oplus a_{2}\\r_{1}+r_{2}+(a_{1}\land a_{2})\\c_{1}+c_{2}+(a_{1}\land a_{2})\end{bmatrix}},$
where $\oplus$ is the logical XOR operator and $\land$ is the logical AND operator.

#### Negation

A unary negation operator $({\text{HECS}},-)$ has been defined as
    $-\mathbf {p} ={\begin{bmatrix}a\\-r-a\\-c-a\end{bmatrix}}.$

#### Subtraction

A binary subtraction operator $({\text{HECS}},-)$ has been defined by combining the negation and addition operations as
    $\mathbf {p} _{1}-\mathbf {p} _{2}=\mathbf {p} _{1}+(-\mathbf {p} _{2}).$

#### Scalar multiplication

Scalar multiplication has been defined for non-negative integer scalar multipliers as
    $k\mathbf {p} ={\begin{bmatrix}(ak){\bmod {2}}\\kr+(a)\left\lfloor {\frac {k}{2}}\right\rfloor \\kc+(a)\left\lfloor {\frac {k}{2}}\right\rfloor \end{bmatrix}},$
and
    $-k\mathbf {p} =k(-\mathbf {p} ).$

### Separable Fourier kernel

The hexagonal discrete Fourier transform (HDFT) was developed by Mersereau and was converted to an HECS representation by Rummelt. Let $x(a,r,c)$ be a two-dimensional hexagonally sampled signal and let both arrays be of size $n\times m$. Let $X(b,s,d)$ be the Fourier transform of x. The HDFT equation for the forward transform is given by
       $X(b,s,d)=\sum _{a}\sum _{r}\sum _{c}x(a,r,c)\exp \left[-j\pi \left({\frac {(a+2c)(b+2d)}{2m}}+{\frac {(a+2r)(b+2s)}{n}}\right)\right]$
Notice that the HECS representation of the HDFT overcomes Mersereau's "insurmountable difficulty" since it is a separable kernel, which led to the development of the hexagonal fast Fourier transform.

## Alternative addressing schemes

There have been several attempts to develop efficient coordinate systems for the hexagonal grid. Snyder describes a coordinate system based on non-orthogonal bases which is referred to as the h2 system. Her developed an interesting three-coordinate system that uses an oblique plane in three dimensional space. For various reasons, both of these approaches require cumbersome machine representations that lead to inefficient image processing operations. Generalized balanced ternary (GBT) is based on a hierarchy of cells, where at every level the cells are each aggregates of cells from the previous level. In two-dimensions, GBT can be used to address the hexagonal grid where each grid point is addressed with a string of base-7 digits and each digit indicates the hexagon's position within that level of the hierarchy. The use of GBT and slightly modified versions of GBT such as HIP and Spiral Architecture for addressing hexagonal grids in two dimensions are abundant in the literature. While these approaches have some interesting mathematical properties, they fail to be convenient or efficient for image processing.

## Other 2D hexagonal grid applications

Although HECS was developed mainly for digital image processing of hexagonally sampled images, its benefits extend to other applications such as finding the shortest path distance and shortest path routing between points in hexagonal interconnection networks. Other addressing approaches have been developed for such applications but they suffer the same drawbacks as the ones described above.