@rickosborne/hexgrid
Version:
Rick Osborne's collection of hexagonal grid-related code.
155 lines • 4.17 kB
TypeScript
import type { Cube } from "./hex-system.js";
import type { BareQRSPoint, QRSPoint } from "./qrs.js";
/**
* Cube points store the `s` value explicitly, instead of calculating it.
*/
export interface BareHexCubePoint extends BareQRSPoint {
/**
* Bottom right (negative) to top left (positive).
*/
s: number;
}
export interface HexCubePoint extends QRSPoint<Cube>, BareHexCubePoint {
}
export declare const CUBE_FLAT_SE: Readonly<{
readonly q: 1;
readonly r: 0;
readonly s: -1;
readonly system: "cube";
}>;
export declare const CUBE_FLAT_N: Readonly<{
readonly q: 0;
readonly r: -1;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_FLAT_NW: Readonly<{
readonly q: -1;
readonly r: 0;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_FLAT_S: Readonly<{
readonly q: 0;
readonly r: 1;
readonly s: -1;
readonly system: "cube";
}>;
export declare const CUBE_NE: Readonly<{
readonly q: 1;
readonly r: -1;
readonly s: 0;
readonly system: "cube";
}>;
export declare const CUBE_SW: Readonly<{
readonly q: -1;
readonly r: 1;
readonly s: 0;
readonly system: "cube";
}>;
export declare const CUBE_POINTY_E: Readonly<{
readonly q: 1;
readonly r: 0;
readonly s: -1;
readonly system: "cube";
}>;
export declare const CUBE_POINTY_NW: Readonly<{
readonly q: 0;
readonly r: -1;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_POINTY_W: Readonly<{
readonly q: -1;
readonly r: 0;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_POINTY_SE: Readonly<{
readonly q: 0;
readonly r: 1;
readonly s: -1;
readonly system: "cube";
}>;
export type HexCubeDirection = typeof CUBE_POINTY_E | typeof CUBE_NE | typeof CUBE_POINTY_NW | typeof CUBE_POINTY_W | typeof CUBE_SW | typeof CUBE_POINTY_SE;
export declare const HEX_CUBE_DIRECTIONS: Readonly<HexCubeDirection[]>;
export declare const stringifyCube: ({ q, r, s }: BareHexCubePoint) => string;
/**
* Build a branded Cube point from `q` and `r` coordinates.
*/
export declare const cubeFromQR: (q: number, r: number) => HexCubePoint;
export type CubeTuple = [q: number, r: number, s: number];
export declare const CUBE_DIAG_FLAT_E: Readonly<{
readonly q: 2;
readonly r: -1;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_FLAT_SW: Readonly<{
readonly q: -1;
readonly r: 2;
readonly s: -1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_FLAT_W: Readonly<{
readonly q: -2;
readonly r: 1;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_FLAT_NE: Readonly<{
readonly q: 1;
readonly r: -2;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_SE: Readonly<{
readonly q: 1;
readonly r: 1;
readonly s: -2;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_NW: Readonly<{
readonly q: -1;
readonly r: -1;
readonly s: 2;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_POINTY_N: Readonly<{
readonly q: 1;
readonly r: -2;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_POINTY_NE: Readonly<{
readonly q: 2;
readonly r: -1;
readonly s: 1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_POINTY_S: Readonly<{
readonly q: -1;
readonly r: 2;
readonly s: -1;
readonly system: "cube";
}>;
export declare const CUBE_DIAG_POINTY_SW: Readonly<{
readonly q: -2;
readonly r: 1;
readonly s: 1;
readonly system: "cube";
}>;
export type CubeDiagDirection = typeof CUBE_DIAG_SE | typeof CUBE_DIAG_NW | typeof CUBE_DIAG_POINTY_N | typeof CUBE_DIAG_POINTY_NE | typeof CUBE_DIAG_POINTY_S | typeof CUBE_DIAG_POINTY_SW;
export declare const CUBE_ORIGIN: Readonly<{
readonly q: 0;
readonly r: 0;
readonly s: 0;
readonly system: "cube";
}>;
export declare const CUBE_EPSILON: Readonly<{
q: number;
r: number;
s: number;
system: "cube";
}>;
//# sourceMappingURL=cube.d.ts.map