UNPKG

@siedlerchr/types-ol-ext

Version:
169 lines (141 loc) 4.61 kB
import type { Coordinate } from 'ol/coordinate' export interface Options { Size?: number; origin?: Coordinate; layout?: HexagonLayout; } /** @typedef {'pointy' | 'flat'} HexagonLayout * Layout of a Hexagon. Flat means the bottom part of the hexagon is flat. */ export declare type HexagonLayout = 'pointy' | 'flat'; /** * Hexagonal grids * @classdesc HexGrid is a class to compute hexagonal grids * @see http://www.redblobgames.com/grids/hexagons * * @constructor HexGrid * @extends {Object} */ export default class HexGrid extends Object { /** * @param {Object} [options] * @param {number} [options.Size] Size of the exagon in map units, default 80000 * @param {Coordinate} [options.origin] orgin of the grid, default [0,0] * @param {HexagonLayout} [options.layout] grid layout, default pointy */ constructor(options?: Options); /** Layout */ layout: any /** Set layout * @param {HexagonLayout | undefined} layout name, default pointy */ setLayout(layout: HexagonLayout | undefined): void; /** Get layout * @return {HexagonLayout} layout name */ getLayout(): HexagonLayout; /** Set hexagon origin * @param {Coordinate} coord origin */ setOrigin(coord: Coordinate): void; /** Get hexagon origin * @return {Coordinate} coord origin */ getOrigin(): Coordinate; /** Set hexagon Size * @param {number} hexagon Size */ setSize(hexagon: number): void; /** Get hexagon Size * @return {number} hexagon Size */ getSize(): number; /** Convert cube to axial coords * @param {Coordinate} c cube coordinate * @return {Coordinate} axial coordinate */ cube2hex(c: Coordinate): Coordinate; /** Convert axial to cube coords * @param {Coordinate} h axial coordinate * @return {Coordinate} cube coordinate */ hex2cube(h: Coordinate): Coordinate; /** Convert offset to axial coords * @param {Coordinate} h axial coordinate * @return {Coordinate} offset coordinate */ hex2offset(h: Coordinate): Coordinate; /** Convert axial to offset coords * @param {Coordinate} o offset coordinate * @return {Coordinate} axial coordinate */ offset2hex(o: Coordinate): Coordinate; /** Convert offset to cube coords * @param {Coordinate} c cube coordinate * @return {Coordinate} offset coordinate */ cube2offset(c: Coordinate): Coordinate /** Convert cube to offset coords * @param {Coordinate} o offset coordinate * @return {Coordinate} cube coordinate */ offsetToCube(o: Coordinate): Coordinate /** Round cube coords * @param {Coordinate} h cube coordinate * @return {Coordinate} rounded cube coordinate */ cube_round(c: Coordinate, o: Coordinate, h: Coordinate): Coordinate; /** Round axial coords * @param {Coordinate} h axial coordinate * @return {Coordinate} rounded axial coordinate */ hex_round(h: Coordinate): Coordinate; /** Get hexagon corners */ hex_corner(): void; /** Get hexagon coordinates at a coordinate * @param {Coordinate} coord * @return {Arrary<Coordinate>} */ getHexagonAtCoord(coord: Coordinate): Array<Coordinate>; /** Get hexagon coordinates at hex * @param {Coordinate} hex * @return {Arrary<Coordinate>} */ getHexagon(hex: Coordinate): Array<Coordinate>; /** Convert hex to coord * @param {hex} hex * @return {Coordinate} */ hex2coord(hex: Array<Coordinate>): Coordinate; /** Convert coord to hex * @param {Coordinate} coord * @return {hex} */ coord2hex(coord: Coordinate): Array<Coordinate>; /** Calculate distance between to hexagon (number of cube) * @param {Coordinate} a first cube coord * @param {Coordinate} a second cube coord * @return {number} distance */ cube_distance(a: Coordinate, b: Coordinate): number; /** Calculate line between to hexagon * @param {Coordinate} a first cube coord * @param {Coordinate} b second cube coord * @return {Array<Coordinate>} array of cube coordinates */ cube_line(a: Coordinate, b: Coordinate): Coordinate[]; /** Get the neighbors for an hexagon * @param {Coordinate} h axial coord * @param {number} direction * @return { Coordinate | Array<Coordinate> } neighbor || array of neighbors */ hex_neighbors(h: Coordinate, direction: number): Coordinate | Coordinate[]; /** Get the neighbors for an hexagon * @param {Coordinate} c cube coord * @param {number} direction * @return { Coordinate | Array<Coordinate> } neighbor || array of neighbors */ cube_neighbors(c: Coordinate, direction: number): Coordinate | Coordinate[]; }