GithubHelp home page GithubHelp logo

vector2js's Introduction

@aliser/vector2 / Exports

Build Status Coverage Status

Usage

Install with npm.

npm install @aliser/vector2

Import as a module.

import { Vector2, RAD2DEG, DEG2RAD } from '@aliser/vector2';

Enjoy!

Below you can find the docs for all of this.

Note: the static and the instance methods are mixed. Sorry for that.

TODO

  • custom interpolation functions for the static lerp - slide with ease!
  • maybe some static damping function - it'll make the target vector experience some kind of repulsion (the magnitude of which is controller by some specified function) on approaching the end point.
  • getters for directions - up, down, right, west, east, forward, backward, sideways, the 5- and 11- dimensions and other.
  • implement the stuff that other libs like this one are providing: reflect, normal, moveTowards.

Classes

@aliser/vector2 / Exports / Vector2

Class: Vector2

Hierarchy

  • Vector2

Implements

  • IVector2

Table of contents

Constructors

Properties

Accessors

Methods

Constructors

constructor

+ new Vector2(x?: number, y?: number): Vector2

Creates an instance.

Parameters:
Name Type
x? number
y? number

Returns: Vector2

+ new Vector2(xy?: number): Vector2

Creates an instance, where 'x' and 'y' are both equal to 'xy'.

Parameters:
Name Type
xy? number

Returns: Vector2

+ new Vector2(): Vector2

Creates an instance, where 'x' and 'y' are both equal to 0.

Returns: Vector2

+ new Vector2(vec?: Vector2): Vector2

Creates an instance, where 'x' and 'y' are equal to 'x' and 'y' of 'vec', respectively.

Parameters:
Name Type
vec? Vector2

Returns: Vector2

Properties

x

x: number


y

y: number

Accessors

0

0(): number

Returns: number

alias for 'x'.

0(value: number): void

Parameters:
Name Type
value number

Returns: void

alias for 'x'.


1

1(): number

Returns: number

alias for 'y'.

1(value: number): void

Parameters:
Name Type
value number

Returns: void

alias for 'y'.


angle

angle(): number

The signed angle (from -PI to PI radians).

Returns: number

angle(value: number): void

The signed angle (from -PI to PI radians).

Parameters:
Name Type
value number

Returns: void


mag

mag(): number

The length.

Note, when setting 'mag' to negative value, both 'x' and 'y' will be set to 0, and the magnitude will be 0.

Returns: number

mag(value: number): void

The length.

Note, when setting 'mag' to negative value, both 'x' and 'y' will be set to 0, and the magnitude will be 0.

Parameters:
Name Type
value number

Returns: void


max

max(): number

Returns: number

the largest of 'x' and 'y'.


min

min(): number

Returns: number

the smallest of 'x' and 'y'.


sqrMag

sqrMag(): number

Returns: number

the length, squared.


u

u(): number

Returns: number

alias for 'x'.

u(value: number): void

Parameters:
Name Type
value number

Returns: void

alias for 'x'.


v

v(): number

Returns: number

alias for 'y'.

v(value: number): void

Parameters:
Name Type
value number

Returns: void

alias for 'y'.

Methods

add

add(deltaX: number): Vector2

Adds 'deltaX' to both 'x' and 'y'.

Parameters:
Name Type
deltaX number

Returns: Vector2

add(deltaX: number, deltaY: number): Vector2

Adds 'deltaX' and 'deltaY' to 'x' and 'y', respectively.

Parameters:
Name Type
deltaX number
deltaY number

Returns: Vector2

add(vec: Vector2): Vector2

Adds 'x' and 'y' of 'vec' to 'x' and 'y', respectively.

Parameters:
Name Type
vec Vector2

Returns: Vector2


ceil

ceil(): Vector2

Does the rounding to the nearest larger integer.

Returns: Vector2


clamp

clamp(): Vector2

Restricts 'x' and 'y' from going below 0 or above 1.

Returns: Vector2

clamp(upperBound: number): Vector2

Restricts 'x' and 'y' from going below 0 or above 'upperBound'.

Parameters:
Name Type
upperBound number

Returns: Vector2

clamp(lowerBound: number, upperBound: number): Vector2

Restricts 'x' and 'y' from going below 'lowerBound' or above 'upperBound'.

Parameters:
Name Type
lowerBound number
upperBound number

Returns: Vector2

clamp(lowerBoundX: number, upperBoundX: number, lowerBoundY: number, upperBoundY: number): Vector2

Restricts 'x' from going below 'lowerBoundX' or above 'upperBoundX', and for 'y' from going below 'lowerBoundY' or above 'upperBoundY'.

Parameters:
Name Type
lowerBoundX number
upperBoundX number
lowerBoundY number
upperBoundY number

Returns: Vector2


copy

copy(): Vector2

Returns: Vector2

a copy of this instance.


div

div(divisor: number): Vector2

Divides both 'x' and 'y' by 'divisor'.

Parameters:
Name Type
divisor number

Returns: Vector2

div(divisorX: number, divisorY: number): Vector2

Divides 'x' and 'y' by 'divisorX' and 'divisorY', respectively.

Parameters:
Name Type
divisorX number
divisorY number

Returns: Vector2

div(vec: Vector2): Vector2

Divides 'x' and 'y' by 'x' and 'y' of vec, respectively.

Parameters:
Name Type
vec Vector2

Returns: Vector2


floor

floor(): Vector2

Does the rounding to the nearest smaller integer.

Returns: Vector2


isEquals

isEquals(vec: Vector2): boolean

Checks if 'x' and 'y' are strictly equal to 'x' and 'y', respectively.

Parameters:
Name Type
vec Vector2

Returns: boolean


lerp

lerp(vec1: Vector2, vec2: Vector2, t: number): Vector2

Linearly interpolates between 'vec1' and 'vec2' by 't', setting this instance to result.

Parameters:
Name Type
vec1 Vector2
vec2 Vector2
t number

Returns: Vector2


mod

mod(divisor: number): Vector2

Divides both 'x' and 'y' by 'divisor' and sets them to the remainder of that division, respectively.

Parameters:
Name Type
divisor number

Returns: Vector2

mod(divisorX: number, divisorY: number): Vector2

Divides 'x' and 'y' by 'divisorX' and 'divisorY', respectively, and sets them to the remainder of that division, also respectively.

Parameters:
Name Type
divisorX number
divisorY number

Returns: Vector2


mult

mult(multiplier: number): Vector2

Multiplies both 'x' and 'y' by 'multiplier'.

Parameters:
Name Type
multiplier number

Returns: Vector2

mult(multiplierX: number, multiplierY: number): Vector2

Multiplies 'x' and 'y' by 'multiplierX' and 'multiplierY', respectively.

Parameters:
Name Type
multiplierX number
multiplierY number

Returns: Vector2

mult(vec: Vector2): Vector2

Multiplies 'x' and 'y' by 'x' and 'y' of 'vec', respectively.

Parameters:
Name Type
vec Vector2

Returns: Vector2


negate

negate(): Vector2

Inverts both 'x' and 'y' (makes them -'x' and -'y').

Returns: Vector2


normalize

normalize(): Vector2

Mangles the length of this instance until it will be 1.

Note, if the length of this instance is 0, than it will not be changed.

Returns: Vector2


rotateBy

rotateBy(angleInRadiansDelta: number): Vector2

Rotates this instance by 'angleInRadiansDelta' radians.

Parameters:
Name Type
angleInRadiansDelta number

Returns: Vector2

rotateBy(vec: Vector2): Vector2

Rotates this instance by the signed angle of 'vec'.

Parameters:
Name Type
vec Vector2

Returns: Vector2


rotateTo

rotateTo(angleInRadians: number): Vector2

Rotates this instance to 'angleInRadians' radians.

Parameters:
Name Type
angleInRadians number

Returns: Vector2

rotateTo(vec: Vector2): Vector2

Rotates this instance to the angle of 'vec'.

Parameters:
Name Type
vec Vector2

Returns: Vector2


round

round(): Vector2

Does the rounding to the nearest integer.

Returns: Vector2


set

set(x?: number, y?: number): Vector2

Sets 'x' and 'y', respectively.

Parameters:
Name Type
x? number
y? number

Returns: Vector2

set(xy?: number): Vector2

Sets both 'x' and 'y' to 'xy'.

Parameters:
Name Type
xy? number

Returns: Vector2

set(): Vector2

Sets both 'x' and 'y' to 0.

Returns: Vector2

set(vec?: Vector2): Vector2

Sets 'x' and 'y' to 'x' and 'y' of 'vec', respectively.

Parameters:
Name Type
vec? Vector2

Returns: Vector2


setMag

setMag(value: number): Vector2

Function alias of 'mag'.

Sets the length.

Note, when setting 'value' is negative, both 'x' and 'y' will be set to 0, and the magnitude will be 0.

Parameters:
Name Type
value number

Returns: Vector2

setMag(vec: Vector2): Vector2

Sets the length to the length of vec.

Parameters:
Name Type
vec Vector2

Returns: Vector2


sub

sub(delta: number): Vector2

Subtracts 'delta' from both 'x' and 'y'.

Parameters:
Name Type
delta number

Returns: Vector2

sub(deltaX: number, deltaY: number): Vector2

Subtracts 'deltaX' and 'deltaY' from 'x' and 'y', respectively.

Parameters:
Name Type
deltaX number
deltaY number

Returns: Vector2

sub(vec: Vector2): Vector2

Subtracts 'x' and 'y' of 'vec' from 'x' and 'y', respectively.

Parameters:
Name Type
vec Vector2

Returns: Vector2


add

Staticadd(...vecs: [Vector2, Vector2, ...Vector2[]]): Vector2

Adds 'vecs' together.

Parameters:
Name Type
...vecs [Vector2, Vector2, ...Vector2[]]

Returns: Vector2


angleBetween

StaticangleBetween(vec1: Vector2, vec2: Vector2): number

Parameters:
Name Type
vec1 Vector2
vec2 Vector2

Returns: number

an unsigned angle (from 0 to PI radians) between 'vec1' and 'vec2'.


angleBetweenSigned

StaticangleBetweenSigned(vec1: Vector2, vec2: Vector2): number

Parameters:
Name Type
vec1 Vector2
vec2 Vector2

Returns: number

the smallest signed angle (from -PI to PI radians) between 'vec1' and 'vec2'.

Note, that the resulting angle is the angle that, if applied as a rotation to 'vec1', will result in 'vec2'.


dist

Staticdist(vec1: Vector2, vec2: Vector2): number

Parameters:
Name Type
vec1 Vector2
vec2 Vector2

Returns: number

the distance between 'vec1' and 'vec2'.


div

Staticdiv(...vectors: [Vector2, Vector2, ...Vector2[]]): Vector2

Sequentially divides 'vecs', one by one.

Parameters:
Name Type
...vectors [Vector2, Vector2, ...Vector2[]]

Returns: Vector2


dot

Staticdot(vec1: Vector2, vec2: Vector2): number

Parameters:
Name Type
vec1 Vector2
vec2 Vector2

Returns: number

the dot product of 'vec1' and 'vec2'.


fromAngle

StaticfromAngle(angleOfRadians: number, length?: number): Vector2

Parameters:
Name Type Default value
angleOfRadians number -
length number 1

Returns: Vector2

a new instance with angle 'angleOfRadians' radians and length 'length'.


lerp

Staticlerp(vecOut: Vector2, vec1: Vector2, vec2: Vector2, t: number): Vector2

Linearly interpolates between 'vec1' and 'vec2' by 't', setting 'vecOut' to result.

Parameters:
Name Type
vecOut Vector2
vec1 Vector2
vec2 Vector2
t number

Returns: Vector2

'vecOut'.


mult

Staticmult(...vecs: [Vector2, Vector2, ...Vector2[]]): Vector2

Multiplies 'vecs' together.

Parameters:
Name Type
...vecs [Vector2, Vector2, ...Vector2[]]

Returns: Vector2


random

Staticrandom(multiplier?: number): Vector2

Parameters:
Name Type Default value
multiplier number 1

Returns: Vector2

a new instance with 'x' and 'y' individually set to some random value from -1 to below 1, multiplied by 'multiplier'.


randomWithLength

StaticrandomWithLength(length?: number): Vector2

Parameters:
Name Type Default value
length number 1

Returns: Vector2

a new instance with 'x' and 'y' individually set to some random value in such a way that the length of the new instance will be 'length'.


sub

Staticsub(...vecs: [Vector2, Vector2, ...Vector2[]]): Vector2

Sequentially subtracts 'vecs', one by one.

Parameters:
Name Type
...vecs [Vector2, Vector2, ...Vector2[]]

Returns: Vector2


zero

Staticzero(): Vector2

Returns: Vector2

a new instance with both 'x' and 'y' set to 0.

@aliser/vector2 / Exports

@aliser/vector2

Table of contents

Classes

Variables

Variables

DEG2RAD

Const DEG2RAD: number

Multiply your degrees by this to convert them to radians.


RAD2DEG

Const RAD2DEG: number

Multiply your radians by this to convert them to degrees.

vector2js's People

Contributors

murolem avatar

Watchers

 avatar

vector2js's Issues

todo

  • fix description for random()
  • add proper lerp (normal and static variants)
  • add method for generating a random point that is offset from "starting point" at random distance with set max limit
  • add method for generating a random point that is offset from "starting point" at random distance with set max limit, but instead of using a circular distribution usa a square one.
  • rework the random functions so that it's more clear what they do.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.