JSPM

numeric-ninja

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q25557F
  • License MIT

Simple math library with vectors and utilities

Package Exports

  • numeric-ninja
  • numeric-ninja/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (numeric-ninja) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

numeric-ninja

Table of content

Vector

Vector2 declaration
export declare class Vector2 {
  x: number;
  y: number;

  constructor(x: number = 0, y: number = 0);

  set(x: number, y: number): void;
  setVector2(vector: Vector2): void;

  add(value: Vector2): Vector2;
  add(value: number): Vector2;

  sub(value: Vector2): Vector2;
  sub(value: number): Vector2;

  mul(value: Vector2): Vector2;
  mul(value: number): Vector2;

  div(value: Vector2): Vector2;
  div(value: number): Vector2;

  isEqual(vector: Vector2): boolean;
  getMagnitude(): number;
  getSqrMagnitude(): number;
  getNormalized(): Vector2;
  normalize(): void;

  static lerp(v1: Vector2, v2: Vector2, t: number): Vector2;
  static lerpUnclamped(v1: Vector2, v2: Vector2, t: number): Vector2;
  static dotProduct(v1: Vector2, v2: Vector2): number;
  static reflect(v1: Vector2, v2: Vector2): Vector2;
  static angle(from: Vector2, to: Vector2): number;
  static distance(v1: Vector2, v2: Vector2): number;

  static zeroVector(): Vector2;
  static oneVector(): Vector2;
  static upVector(): Vector2;
  static downVector(): Vector2;
  static leftVector(): Vector2;
  static rightVector(): Vector2;

  toString(): string;
  clone(): Vector2;
}
Vector3 declaration
export declare class Vector3 {
  x: number;
  y: number;
  z: number;

  constructor(x: number = 0, y: number = 0, z: number = 0);

  set(x: number, y: number, z: number): void;
  setVector3(vector: Vector3): void;

  add(value: Vector3): Vector3;
  add(value: number): Vector3;

  sub(value: Vector3): Vector3;
  sub(value: number): Vector3;

  mul(value: Vector3): Vector3;
  mul(value: number): Vector3;

  div(value: Vector3): Vector3;
  div(value: number): Vector3;

  isEqual(vector: Vector3): boolean;
  getMagnitude(): number;
  getSqrMagnitude(): number;
  getNormalized(): Vector3;
  normalize(): void;

  static lerp(v1: Vector3, v2: Vector3, t: number): Vector3;
  static lerpUnclamped(v1: Vector3, v2: Vector3, t: number): Vector3;
  static dotProduct(v1: Vector3, v2: Vector3): number;
  static reflect(v1: Vector3, v2: Vector3): Vector3;
  static angle(from: Vector3, to: Vector3): number;
  static distance(v1: Vector3, v2: Vector3): number;

  static zeroVector(): Vector3;
  static oneVector(): Vector3;
  static upVector(): Vector3;
  static downVector(): Vector3;
  static leftVector(): Vector3;
  static rightVector(): Vector3;

  toString(): string;
  clone(): Vector3;
}

public

Components of the vector

Vector2

x: number;
y: number;

Vector3

x: number;
y: number;
z: number;

set and setVector

Sets values to the current class

Vector2

set(x: number, y: number): void;
setVector2(vector: Vector2): void;

Vector3

set(x: number, y: number, z: number): void;
setVector3(vector: Vector3): void;

add, sub, mul and div

All arithmetic operations return a new vector instance

Vector2

// addition
add(value: Vector2): Vector2;
add(value: number): Vector2;

// subtract
sub(value: Vector2): Vector2;
sub(value: number): Vector2;

// multiplication
mul(value: Vector2): Vector2;
mul(value: number): Vector2;

// division
div(value: Vector2): Vector2;
div(value: number): Vector2;

Vector3

// addition
add(value: Vector3): Vector3;
add(value: number): Vector3;

// subtract
sub(value: Vector3): Vector3;
sub(value: number): Vector3;

// multiplication
mul(value: Vector3): Vector3;
mul(value: number): Vector3;

// division
div(value: Vector3): Vector3;
div(value: number): Vector3;

isEqual

Returns true if the given vector is equal to this vector.

Vector2

isEqual(vector: Vector2): boolean;

Vector3

isEqual(vector: Vector3): boolean;

getMagnitude()

Returns the length of this vector

Vector2 and Vector3

getMagnitude(): number;

getSqrMagnitude()

Returns the squared length of this vector

Vector2 and Vector3

  getSqrMagnitude(): number;

getNormalized()

Returns this vector with a magnitude of 1

Vector2

  getNormalized(): Vector2;

Vector3

  getNormalized(): Vector3;

normalize()

Makes this vector have a magnitude of 1

Vector2 and Vector3

  normalize(): void;

toString()

Returns a vector in string representation

Vector2

  toString(): string; // `x: 0, y: 0`

Vector3

  toString(): string; // `x: 0, y: 0, z: 0`

clone()

Returns a copy of the current vector

Vector2

  clone(): Vector2;

Vector3

  clone(): Vector3;

Static

lerp

Linearly interpolates between vectors v1 and v2 by t.

Vector2

lerp(v1: Vector2, v2: Vector2, t: number): Vector2;

Vector3

lerp(v1: Vector3, v2: Vector3, t: number): Vector3;

lerpUnclamped

Linearly interpolates between vectors v1 and v2 by t.

Vector2

lerpUnclamped(v1: Vector2, v2: Vector2, t: number): Vector2;

Vector3

lerpUnclamped(v1: Vector3, v2: Vector3, t: number): Vector3;

dotProduct

Dot Product of two vectors.

Vector2

dotProduct(v1: Vector2, v2: Vector2): number;

Vector3

dotProduct(v1: Vector3, v2: Vector3): number;

reflect

Reflects a vector off the vector defined by a normal.

Vector2

reflect(v1: Vector2, v2: Vector2): Vector2;

Vector3

reflect(v1: Vector3, v2: Vector3): Vector3;

angle

Gets the unsigned angle in degrees between from and to.

Vector2

angle(from: Vector2, to: Vector2): number;

Vector3

angle(from: Vector3, to: Vector3): number;

distance

Returns the distance between v1 and v2.

Vector2

distance(v1: Vector2, v2: Vector2): number;

Vector3

distance(v1: Vector3, v2: Vector3): number;

Vector2 constants

zeroVector(): Vector2; // new Vector2(0, 0)
oneVector(): Vector2; // new Vector2(1, 1);
upVector(): Vector2; // new Vector2(0, 1);
downVector(): Vector2; // new Vector2(0, -1);
leftVector(): Vector2; // new Vector2(-1, 0);
rightVector(): Vector2; // new Vector2(1, 0);

Vector3 constants

zeroVector(): Vector3; // new Vector3(0, 0, 0);
oneVector(): Vector3; // new Vector3(1, 1, 1);
upVector(): Vector3; // new Vector3(0, 1, 0);
downVector(): Vector3; // new Vector3(0, -1, 0);
leftVector(): Vector3; // new Vector3(-1, 0, 0);
rightVector(): Vector3; // new Vector3(1, 0, 0);
forwardVector(): Vector3; // new Vector3(0, 0, 1);
backVector(): Vector3; // new Vector3(0, 0, -1);

Utils

Utils declaration
export declare class Utils {
  static degToRad: number;
  static radToDeg: number;
  static halfFullAngleInDeg: number; // 180
  static fullAngleInDeg: number; // 360

  static clamp(value: number, minValue: number, maxValue: number): number;
  static clamp01(value: number): number;
  static lerp(a: number, b: number, t: number): number;
  static lerpUnclamped(a: number, b: number, t: number): number;
  static inverseLerp(a: number, b: number, value: number): number;
  static lerpAngle(a: number, b: number, t: number): number;
  static repeat(value: number, length: number): number;
  static pingPong(value: number, length: number): number;
  static deltaAngle(current: number, target: number): number;
  static isEqualNum(x: number, y: number): boolean;
  static getRandomFloatInRange01(minInclusive: number, maxExclusive: number): number;
  static getRandomIntInRange(minInclusive: number, maxExclusive: number): number;
  static isNumber(value: number): boolean;
  static isNumeric(value: number | string): boolean;
}