Mirror Engine
V7
How To
Mirror Engine Logo

Mirror Engine API


Mirror Engine API / Vec2

Class: Vec2

A 2-dimensional vector.

Constructors

new Vec2()

new Vec2(x?: number | number[], y?: number): Vec2

Create a new Vec2 instance.

Parameters

x?

The x value. Defaults to 0. If x is an array of length 2, the array will be used to populate all components.

number | number[]

y?

number = 0

The y value. Defaults to 0.

Returns

Vec2

Example

const v = new Vec2(1, 2)

Properties

x

x: number

The first component of the vector.


y

y: number

The second component of the vector.


DOWN

readonly static DOWN: Vec2;

A constant vector set to [0, -1].


HALF

readonly static HALF: Vec2;

A constant vector set to [0.5, 0.5].


LEFT

readonly static LEFT: Vec2;

A constant vector set to [-1, 0].


ONE

readonly static ONE: Vec2;

A constant vector set to [1, 1].


readonly static RIGHT: Vec2;

A constant vector set to [1, 0].


UP

readonly static UP: Vec2;

A constant vector set to [0, 1].


ZERO

readonly static ZERO: Vec2;

A constant vector set to [0, 0].

Methods

add()

add(rhs: Vec2): Vec2

Adds a 2-dimensional vector to another in place.

Parameters

rhs

Vec2

The vector to add to the specified vector.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(10, 10)
const b = new Vec2(20, 20)

a.add(b)

// Outputs [30, 30]
console.log('The result of the addition is: ' + a.toString())

add2()

add2(lhs: Vec2, rhs: Vec2): Vec2

Adds two 2-dimensional vectors together and returns the result.

Parameters

lhs

Vec2

The first vector operand for the addition.

rhs

Vec2

The second vector operand for the addition.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(10, 10)
const b = new Vec2(20, 20)
const r = new Vec2()

r.add2(a, b)
// Outputs [30, 30]

console.log('The result of the addition is: ' + r.toString())

addScalar()

addScalar(scalar: number): Vec2

Adds a number to each element of a vector.

Parameters

scalar

number

The number to add.

Returns

Vec2

Self for chaining.

Example

const vec = new Vec2(3, 4)

vec.addScalar(2)

// Outputs [5, 6]
console.log('The result of the addition is: ' + vec.toString())

addScaled()

addScaled(rhs: Vec2, scalar: number): Vec2

Adds a 2-dimensional vector scaled by scalar value. Does not modify the vector being added.

Parameters

rhs

Vec2

The vector to add to the specified vector.

scalar

number

The number to multiply the added vector with.

Returns

Vec2

Self for chaining.

Example

const vec = new Vec2(1, 2)

vec.addScaled(Vec2.UP, 2)

// Outputs [1, 4]
console.log('The result of the addition is: ' + vec.toString())

angle()

angle(): number

Returns the angle in degrees of the specified 2-dimensional vector.

Returns

number

The angle in degrees of the specified 2-dimensional vector.

Example

const v = new Vec2(6, 0)
const angle = v.angle()
// Outputs 90..
console.log('The angle of the vector is: ' + angle)

angleTo()

angleTo(rhs: Vec2): number

Returns the shortest Euler angle between two 2-dimensional vectors.

Parameters

rhs

Vec2

The 2-dimensional vector to calculate angle to.

Returns

number

The shortest angle in degrees between two 2-dimensional vectors.

Example

const a = new Vec2(0, 10) // up
const b = new Vec2(1, -1) // down-right
const angle = a.angleTo(b)
// Outputs 135..
console.log('The angle between vectors a and b: ' + angle)

ceil()

ceil(src?: Vec2): Vec2

Each element is rounded up to the next largest integer.

Parameters

src?

Vec2 = ...

The vector to ceil. If not set, the operation is done in place.

Returns

Vec2

Self for chaining.


clone()

clone(): Vec2

Returns an identical copy of the specified 2-dimensional vector.

Returns

Vec2

A 2-dimensional vector containing the result of the cloning.

Example

const v = new Vec2(10, 20)
const vclone = v.clone()
console.log('The result of the cloning is: ' + vclone.toString())

copy()

copy(rhs: Vec2): Vec2

Copies the contents of a source 2-dimensional vector to a destination 2-dimensional vector.

Parameters

rhs

Vec2

A vector to copy to the specified vector.

Returns

Vec2

Self for chaining.

Example

const src = new Vec2(10, 20)
const dst = new Vec2()

dst.copy(src)

console.log('The two vectors are ' + (dst.equals(src) ? 'equal' : 'different'))

cross()

cross(rhs: Vec2): number

Returns the result of a cross product operation performed on the two specified 2-dimensional vectors.

Parameters

rhs

Vec2

The second 2-dimensional vector operand of the cross product.

Returns

number

The cross product of the two vectors.

Example

const right = new Vec2(1, 0)
const up = new Vec2(0, 1)
const crossProduct = right.cross(up)

// Prints 1
console.log('The result of the cross product is: ' + crossProduct)

distance()

distance(rhs: Vec2): number

Returns the distance between the two specified 2-dimensional vectors.

Parameters

rhs

Vec2

The second 2-dimensional vector to test.

Returns

number

The distance between the two vectors.

Example

const v1 = new Vec2(5, 10)
const v2 = new Vec2(10, 20)
const d = v1.distance(v2)
console.log('The distance between v1 and v2 is: ' + d)

div()

div(rhs: Vec2): Vec2

Divides a 2-dimensional vector by another in place.

Parameters

rhs

Vec2

The vector to divide the specified vector by.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(4, 9)
const b = new Vec2(2, 3)

a.div(b)

// Outputs [2, 3]
console.log('The result of the division is: ' + a.toString())

div2()

div2(lhs: Vec2, rhs: Vec2): Vec2

Divides one 2-dimensional vector by another and writes the result to the specified vector.

Parameters

lhs

Vec2

The dividend vector (the vector being divided).

rhs

Vec2

The divisor vector (the vector dividing the dividend).

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(4, 9)
const b = new Vec2(2, 3)
const r = new Vec2()

r.div2(a, b)
// Outputs [2, 3]

console.log('The result of the division is: ' + r.toString())

divScalar()

divScalar(scalar: number): Vec2

Divides each element of a vector by a number.

Parameters

scalar

number

The number to divide by.

Returns

Vec2

Self for chaining.

Example

const vec = new Vec2(3, 6)

vec.divScalar(3)

// Outputs [1, 2]
console.log('The result of the division is: ' + vec.toString())

dot()

dot(rhs: Vec2): number

Returns the result of a dot product operation performed on the two specified 2-dimensional vectors.

Parameters

rhs

Vec2

The second 2-dimensional vector operand of the dot product.

Returns

number

The result of the dot product operation.

Example

const v1 = new Vec2(5, 10)
const v2 = new Vec2(10, 20)
const v1dotv2 = v1.dot(v2)
console.log('The result of the dot product is: ' + v1dotv2)

equals()

equals(rhs: Vec2): boolean

Reports whether two vectors are equal.

Parameters

rhs

Vec2

The vector to compare to the specified vector.

Returns

boolean

True if the vectors are equal and false otherwise.

Example

const a = new Vec2(1, 2)
const b = new Vec2(4, 5)
console.log('The two vectors are ' + (a.equals(b) ? 'equal' : 'different'))

equalsApprox()

equalsApprox(rhs: Vec2, epsilon?: number): boolean

Reports whether two vectors are equal using an absolute error tolerance.

Parameters

rhs

Vec2

The vector to be compared against.

epsilon?

number = 1e-6

The maximum difference between each component of the two vectors. Defaults to 1e-6.

Returns

boolean

True if the vectors are equal and false otherwise.

Example

const a = new Vec2()
const b = new Vec2()
console.log(
  'The two vectors are approximately ' +
    (a.equalsApprox(b, 1e-9) ? 'equal' : 'different')
)

floor()

floor(src?: Vec2): Vec2

Each element is set to the largest integer less than or equal to its value.

Parameters

src?

Vec2 = ...

The vector to floor. If not set, the operation is done in place.

Returns

Vec2

Self for chaining.


fromArray()

fromArray(arr: number[] | ArrayBufferView<ArrayBufferLike>, offset?: number): Vec2

Set the values of the vector from an array.

Parameters

arr

The array to set the vector values from.

number[] | ArrayBufferView<ArrayBufferLike>

offset?

number = 0

The zero-based index at which to start copying elements from the array. Default is 0.

Returns

Vec2

Self for chaining.

Example

const v = new Vec2()
v.fromArray([
  20,
  10
])
// v is set to [20, 10]

length()

length(): number

Returns the magnitude of the specified 2-dimensional vector.

Returns

number

The magnitude of the specified 2-dimensional vector.

Example

const vec = new Vec2(3, 4)
const len = vec.length()
// Outputs 5
console.log('The length of the vector is: ' + len)

lengthSq()

lengthSq(): number

Returns the magnitude squared of the specified 2-dimensional vector.

Returns

number

The magnitude of the specified 2-dimensional vector.

Example

const vec = new Vec2(3, 4)
const len = vec.lengthSq()
// Outputs 25
console.log('The length squared of the vector is: ' + len)

lerp()

lerp(
   lhs: Vec2,
   rhs: Vec2,
   alpha: number): Vec2

Returns the result of a linear interpolation between two specified 2-dimensional vectors.

Parameters

lhs

Vec2

The 2-dimensional to interpolate from.

rhs

Vec2

The 2-dimensional to interpolate to.

alpha

number

The value controlling the point of interpolation. Between 0 and 1, the linear interpolant will occur on a straight line between lhs and rhs. Outside of this range, the linear interpolant will occur on a ray extrapolated from this line.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(0, 0)
const b = new Vec2(10, 10)
const r = new Vec2()

r.lerp(a, b, 0) // r is equal to a
r.lerp(a, b, 0.5) // r is 5, 5
r.lerp(a, b, 1) // r is equal to b

max()

max(rhs: Vec2): Vec2

Each element is assigned a value from rhs parameter if it is larger.

Parameters

rhs

Vec2

The 2-dimensional vector used as the source of elements to compare to.

Returns

Vec2

Self for chaining.


min()

min(rhs: Vec2): Vec2

Each element is assigned a value from rhs parameter if it is smaller.

Parameters

rhs

Vec2

The 2-dimensional vector used as the source of elements to compare to.

Returns

Vec2

Self for chaining.


mul()

mul(rhs: Vec2): Vec2

Multiplies a 2-dimensional vector to another in place.

Parameters

rhs

Vec2

The 2-dimensional vector used as the second multiplicand of the operation.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(2, 3)
const b = new Vec2(4, 5)

a.mul(b)

// Outputs 8, 15
console.log('The result of the multiplication is: ' + a.toString())

mul2()

mul2(lhs: Vec2, rhs: Vec2): Vec2

Returns the result of multiplying the specified 2-dimensional vectors together.

Parameters

lhs

Vec2

The 2-dimensional vector used as the first multiplicand of the operation.

rhs

Vec2

The 2-dimensional vector used as the second multiplicand of the operation.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(2, 3)
const b = new Vec2(4, 5)
const r = new Vec2()

r.mul2(a, b)

// Outputs 8, 15
console.log('The result of the multiplication is: ' + r.toString())

mulScalar()

mulScalar(scalar: number): Vec2

Multiplies each element of a vector by a number.

Parameters

scalar

number

The number to multiply by.

Returns

Vec2

Self for chaining.

Example

const vec = new Vec2(3, 6)

vec.mulScalar(3)

// Outputs [9, 18]
console.log('The result of the multiplication is: ' + vec.toString())

normalize()

normalize(src?: Vec2): Vec2

Returns this 2-dimensional vector converted to a unit vector in place. If the vector has a length of zero, the vector's elements will be set to zero.

Parameters

src?

Vec2 = ...

The vector to normalize. If not set, the operation is done in place.

Returns

Vec2

Self for chaining.

Example

const v = new Vec2(25, 0)

v.normalize()

// Outputs 1, 0
console.log('The result of the vector normalization is: ' + v.toString())

rotate()

rotate(degrees: number): Vec2

Rotate a vector by an angle in degrees.

Parameters

degrees

number

The number to degrees to rotate the vector by.

Returns

Vec2

Self for chaining.

Example

const v = new Vec2(0, 10)

v.rotate(45) // rotates by 45 degrees

// Outputs [7.071068.., 7.071068..]
console.log('Vector after rotation is: ' + v.toString())

round()

round(src?: Vec2): Vec2

Each element is rounded up or down to the nearest integer.

Parameters

src?

Vec2 = ...

The vector to round. If not set, the operation is done in place.

Returns

Vec2

Self for chaining.


set()

set(x: number, y: number): Vec2

Sets the specified 2-dimensional vector to the supplied numerical values.

Parameters

x

number

The value to set on the first component of the vector.

y

number

The value to set on the second component of the vector.

Returns

Vec2

Self for chaining.

Example

const v = new Vec2()
v.set(5, 10)

// Outputs 5, 10
console.log('The result of the vector set is: ' + v.toString())

sub()

sub(rhs: Vec2): Vec2

Subtracts a 2-dimensional vector from another in place.

Parameters

rhs

Vec2

The vector to subtract from the specified vector.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(10, 10)
const b = new Vec2(20, 20)

a.sub(b)

// Outputs [-10, -10]
console.log('The result of the subtraction is: ' + a.toString())

sub2()

sub2(lhs: Vec2, rhs: Vec2): Vec2

Subtracts two 2-dimensional vectors from one another and returns the result.

Parameters

lhs

Vec2

The first vector operand for the subtraction.

rhs

Vec2

The second vector operand for the subtraction.

Returns

Vec2

Self for chaining.

Example

const a = new Vec2(10, 10)
const b = new Vec2(20, 20)
const r = new Vec2()

r.sub2(a, b)

// Outputs [-10, -10]
console.log('The result of the subtraction is: ' + r.toString())

subScalar()

subScalar(scalar: number): Vec2

Subtracts a number from each element of a vector.

Parameters

scalar

number

The number to subtract.

Returns

Vec2

Self for chaining.

Example

const vec = new Vec2(3, 4)

vec.subScalar(2)

// Outputs [1, 2]
console.log('The result of the subtraction is: ' + vec.toString())

toArray()

toArray(arr?: number[] | ArrayBufferView<ArrayBufferLike>, offset?: number): number[] | ArrayBufferView<ArrayBufferLike>

Converts the vector to an array.

Parameters

arr?

The array to populate with the color components. If not specified, a new array is created.

number[] | ArrayBufferView<ArrayBufferLike>

offset?

number = 0

The zero-based index at which to start copying elements to the array. Default is 0.

Returns

number[] | ArrayBufferView<ArrayBufferLike>

The vector as an array.

Example

const v = new Vec2(20, 10)
// Outputs [20, 10]
console.log(v.toArray())

toString()

toString(): string

Converts the vector to string form.

Returns

string

The vector in string form.

Example

const v = new Vec2(20, 10)
// Outputs [20, 10]
console.log(v.toString())
Mirror Engine Logo