0.3.6 • Published 9 months ago

extra-grid v0.3.6

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

extra-grid

Install

npm install --save extra-grid
# or
yarn add extra-grid

API

enum Direction {
  Up
, Down
, Left
, Right
, UpLeft
, UpRight
, DownLeft
, DownRight
}

reverseDirection

function reverseDirection(direction: Direction): Direction

getManhattanDistance

function getManhattanDistance(a: [number, number], b: [number, number]): number

getNewCoordinate

function getNewCoordinate(
  x: number
, y: number
, direction: Direction
, distance: number
): [x: number, y: number]

isVonNeumannNeighborOf

function isVonNeumannNeighborOf(
  subject: [number, number]
, object: [number, number]
, range: number = 1
): boolean

isMooreNeighborOf

function isMooreNeighborOf(
  subject: [number, number]
, object: [number, number]
, range: number = 1
): boolean

Grid

class Grid<T> {
  readonly width: number
  readonly height: number

  constructor(
    width: number
  , height: number
  , createCell: (x: number, y: number) => T
  )

  has(x: number, y: number): boolean

  get(x: number, y: number): T
  tryGet(x: number, y: number): T | null

  set(x: number, y: number, value: T): void

  getNewCoordinate(
    x: number
  , y: number
  , direction: Direction
  , distance: number = 1
  ): { x: number; y: number } | null

  coordinates(
    start?: [x: number, y: number] = [0, 0]
  , end?: [x: number, y: number] = [this.width, this.height]
  ): IterableIterator<[x: number, y: number]>
  coordinatesRowMajor(
    start?: [x: number, y: number] = [0, 0]
  , end?: [x: number, y: number] = [this.width, this.height]
  ): IterableIterator<[x: number, y: number]>
  coordinatesColumnMajor(
    start?: [x: number, y: number] = [0, 0]
  , end?: [x: number, y: number] = [this.width, this.height]
  ): IterableIterator<[x: number, y: number]>

  vonNeumannNeighborhoodCoordinates(
    x: number
  , y: number
  , range: number = 1
  ): IterableIterator<[x: number, y: number]>
  vonNeumannNeighborhoodCoordinatesRowMajor(
    x: number
  , y: number
  , range: number = 1
  ): IterableIterator<[x: number, y: number]>
  vonNeumannNeighborhoodCoordinatesColumnMajor(
    x: number
  , y: number
  , range: number = 1
  ): IterableIterator<[x: number, y: number]>

  mooreNeighborhoodCoordinates(
    x: number
  , y: number
  , range: number = 1
  ): IterableIterator<[x: number, y: number]>
  mooreNeighborhoodCoordinatesRowMajor(
    x: number
  , y: number
  , range: number = 1
  ): IterableIterator<[x: number, y: number]>
  mooreNeighborhoodCoordinatesColumnMajor(
    x: number
  , y: number
  , range: number = 1
  ): IterableIterator<[x: number, y: number]>
}
0.3.6

9 months ago

0.3.5

10 months ago

0.3.2

11 months ago

0.3.4

11 months ago

0.3.3

11 months ago

0.3.1

11 months ago

0.3.0

11 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.2.2

1 year ago

0.1.1

2 years ago

0.1.0

2 years ago