Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface Vector

Brief

Vector represents a vector in a normed vector space. It might be numerical vectors, matrices, or something more complicated.

Main Features

  • Copy and Clone copy, clone, assign, ...
  • Manipulators floor, fill, abs, ...
  • Algebra add, sub, inv, mul, prod, ...
  • Linear, cubic and Bezier's Interpolation lerp, herp, ...
  • Equality, zeros and distance methods equal2, mag, dist1, ...
  • Provide immutable operations by cloning addc, subc, ...

Example

let u = Vector3.ex.mul(5.5), v = u.clone();
u.floor(); // u = (5, 0, 0)
u.lerp(v, 0.5) // u = (5.25, 0, 0);
u.comb(2, v) // u = (16.25, 0, 0);

Getting Started

Algebra and interpolation

Perform additions, scalar multiplication, linear interpolation and many other common operations. Take a look at the glossary of operations to have an exhaustive list.

Example

u.add(v).sub(w).comb(lambda, w);
a.prod(b).inv();

Theses operations are the core of space3 framework. Almost all classes of the framework provide or use theses.

if you need a little refresh on algebra, I recommend you to watch the great algebra curse on 3Blue1Brown channel.

The operations are defined in the reference by mentioning two vectors u and v. it's admitted that :

  • u refers to this in the code
  • v refers to the parameter vector in the code
  • The result is stored in this
  • If the method is suffixed by c, the result is a newly created Vector

Comparison and zeros

In order to avoid float precision errors and allow you to choose the most pertinent comparison, a Vector provides three different ways to compare to another one :

  • Using the norm 1, manhattan distance
  • Using the norm 2, dot product distance
  • Using exact comparison coordinates by coordinates.

The first two comparison are based on the following definition of norms :

Norm

Given a norm the distance between two vector is defined by :

Distance

Example

let ex = Vector3.ex, ey = Vector3.ey, zeros = Vector3.zeros;
ex.equal2(ey) // false
ex.equal1(ey) // false
ex.exact(ex) // true
ex.zero1() // false
zeros.nil() // true
zeros.add(ex.mul(0.5 * Number.EPSILON)).nil() // false

Note mag, mag2 accessors uses the norm 2

If you don't know which comparison to use, I recommend you dist, equal2 and zero2 to compare objects by default.

Hierarchy

Implemented by

Indexable

[index: number]: number

Brief

Vector represents a vector in a normed vector space. It might be numerical vectors, matrices, or something more complicated.

Main Features

  • Copy and Clone copy, clone, assign, ...
  • Manipulators floor, fill, abs, ...
  • Algebra add, sub, inv, mul, prod, ...
  • Linear, cubic and Bezier's Interpolation lerp, herp, ...
  • Equality, zeros and distance methods equal2, mag, dist1, ...
  • Provide immutable operations by cloning addc, subc, ...

Example

let u = Vector3.ex.mul(5.5), v = u.clone();
u.floor(); // u = (5, 0, 0)
u.lerp(v, 0.5) // u = (5.25, 0, 0);
u.comb(2, v) // u = (16.25, 0, 0);

Getting Started

Algebra and interpolation

Perform additions, scalar multiplication, linear interpolation and many other common operations. Take a look at the glossary of operations to have an exhaustive list.

Example

u.add(v).sub(w).comb(lambda, w);
a.prod(b).inv();

Theses operations are the core of space3 framework. Almost all classes of the framework provide or use theses.

if you need a little refresh on algebra, I recommend you to watch the great algebra curse on 3Blue1Brown channel.

The operations are defined in the reference by mentioning two vectors u and v. it's admitted that :

  • u refers to this in the code
  • v refers to the parameter vector in the code
  • The result is stored in this
  • If the method is suffixed by c, the result is a newly created Vector

Comparison and zeros

In order to avoid float precision errors and allow you to choose the most pertinent comparison, a Vector provides three different ways to compare to another one :

  • Using the norm 1, manhattan distance
  • Using the norm 2, dot product distance
  • Using exact comparison coordinates by coordinates.

The first two comparison are based on the following definition of norms :

Norm

Given a norm the distance between two vector is defined by :

Distance

Example

let ex = Vector3.ex, ey = Vector3.ey, zeros = Vector3.zeros;
ex.equal2(ey) // false
ex.equal1(ey) // false
ex.exact(ex) // true
ex.zero1() // false
zeros.nil() // true
zeros.add(ex.mul(0.5 * Number.EPSILON)).nil() // false

Note mag, mag2 accessors uses the norm 2

If you don't know which comparison to use, I recommend you dist, equal2 and zero2 to compare objects by default.

Index

Properties

BYTES_PER_ELEMENT

BYTES_PER_ELEMENT: number

The size in bytes of each element in the array.

__@toStringTag

__@toStringTag: "Float64Array"

buffer

buffer: ArrayBufferLike

The ArrayBuffer instance referenced by the array.

byteLength

byteLength: number

The length in bytes of the array.

byteOffset

byteOffset: number

The offset in bytes of the array.

dim

dim: number

dimension of the vector

length

length: number

The length of the array.

mag

mag: number

magnitude of the vector ||u||

mag2

mag2: number

squared magnitude of the vector u . u

Methods

__@iterator

  • __@iterator(): IterableIterator<number>
  • Returns IterableIterator<number>

abs

  • abs(): this

absc

add

addc

array

  • array(): number[]

assign

  • assign(...coordinates: number[]): this
  • assigns components to a vector

    Parameters

    • Rest ...coordinates: number[]

    Returns this

berp

  • brief

    Bezier's interpolation between two vectors

    details

    s must be between 0 and 1. Starting vector is this.

    Parameters

    • target: Vector

      destination of interpolation

    • vector1: Vector

      control point number 1

    • vector2: Vector

      control point number 2

    • s: number

      parameter of the interpolation.

    Returns this

berpc

ceil

  • ceil(): this

ceilc

clone

comb

  • comb(s: number, vector: Vector): this
  • linear combination of a scalar and a vector u + s * v

    Parameters

    Returns this

combc

copy

  • copies a source vector into this component by component

    Parameters

    Returns this

copyWithin

  • copyWithin(target: number, start: number, end?: number): this
  • Returns the this object after copying a section of the array identified by start and end to the same array starting at position target

    Parameters

    • target: number

      If target is negative, it is treated as length+target where length is the length of the array.

    • start: number

      If start is negative, it is treated as length+start. If end is negative, it is treated as length+end.

    • Optional end: number

      If not specified, length of the this object is used as its default value.

    Returns this

der

  • der(ds: number, vector: Vector): this
  • derivative between the two vectors with given step (u - v) / ds

    Parameters

    Returns this

derc

dist

  • dist(vector: Vector): number
  • distance distance between two vectors d2(u, v)

    Parameters

    Returns number

dist1

  • dist1(vector: Vector): number
  • distance between two vectors given by norm 1 d1(u, v)

    Parameters

    Returns number

dist2

  • dist2(vector: Vector): number
  • squared distance between two vectors given by norm 2 d2(u, v)**2

    Parameters

    Returns number

div

  • div(s: number): this
  • usual scalar division of the vector u / s

    Parameters

    • s: number

    Returns this

divc

dot

entries

  • entries(): IterableIterator<[number, number]>
  • Returns an array of key, value pairs for every entry in the array

    Returns IterableIterator<[number, number]>

equal1

  • equal1(vector: Vector): boolean
  • true if the distance 1 between vectors is 0

    Parameters

    Returns boolean

equal2

  • equal2(vector: Vector): boolean
  • true if the distance 2 between vectors is 0

    Parameters

    Returns boolean

every

  • every(callbackfn: function, thisArg?: any): boolean
  • Determines whether all the members of an array satisfy the specified test.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array.

        • (value: number, index: number, array: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns boolean

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns boolean

exact

  • exact(vector: Vector): boolean
  • true if the vectors have exactly the same coordinates

    Parameters

    Returns boolean

fill

  • fill(s: number): this
  • fills this vector with a single scalar value s

    Parameters

    • s: number

    Returns this

fillc

filter

  • filter(callbackfn: function, thisArg?: any): Float64Array
  • Returns the elements of an array that meet the condition specified in a callback function.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array.

        • (value: number, index: number, array: Float64Array): any
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns any

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns Float64Array

find

  • find(predicate: function, thisArg?: any): number | undefined
  • Returns the value of the first element in the array where predicate is true, and undefined otherwise.

    Parameters

    • predicate: function

      find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, find immediately returns that element value. Otherwise, find returns undefined.

        • (value: number, index: number, obj: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • obj: Float64Array

          Returns boolean

    • Optional thisArg: any

      If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.

    Returns number | undefined

findIndex

  • findIndex(predicate: function, thisArg?: any): number
  • Returns the index of the first element in the array where predicate is true, and -1 otherwise.

    Parameters

    • predicate: function

      find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, findIndex immediately returns that element index. Otherwise, findIndex returns -1.

        • (value: number, index: number, obj: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • obj: Float64Array

          Returns boolean

    • Optional thisArg: any

      If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.

    Returns number

floor

  • floor(): this

floorc

forEach

  • forEach(callbackfn: function, thisArg?: any): void
  • Performs the specified action for each element in an array.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.

        • (value: number, index: number, array: Float64Array): void
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns void

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns void

herp

  • brief

    Hermite's interpolation between two vectors

    details

    s must be between 0 and 1. Starting vector is this.

    Parameters

    • target: Vector

      destination of interpolation

    • vector1: Vector

      control point number 1

    • vector2: Vector

      control point number 2

    • s: number

      parameter of the interpolation.

    Returns this

herpc

includes

  • includes(searchElement: number, fromIndex?: number): boolean
  • Determines whether an array includes a certain element, returning true or false as appropriate.

    Parameters

    • searchElement: number

      The element to search for.

    • Optional fromIndex: number

      The position in this array at which to begin searching for searchElement.

    Returns boolean

indexOf

  • indexOf(searchElement: number, fromIndex?: number): number
  • Returns the index of the first occurrence of a value in an array.

    Parameters

    • searchElement: number

      The value to locate in the array.

    • Optional fromIndex: number

      The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.

    Returns number

inv

  • inv(): this
  • multiplicative inverse of a vector u ** -1

    Returns this

invc

join

  • join(separator?: string): string
  • Adds all the elements of an array separated by the specified separator string.

    Parameters

    • Optional separator: string

      A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma.

    Returns string

keys

  • keys(): IterableIterator<number>
  • Returns an list of keys in the array

    Returns IterableIterator<number>

lastIndexOf

  • lastIndexOf(searchElement: number, fromIndex?: number): number
  • Returns the index of the last occurrence of a value in an array.

    Parameters

    • searchElement: number

      The value to locate in the array.

    • Optional fromIndex: number

      The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.

    Returns number

lerp

  • lerp(target: Vector, s: number): this
  • brief

    linear interpolation between two vectors u + (v - u) * s

    details

    s must be between 0 and 1.

    Parameters

    • target: Vector

      destination of interpolation

    • s: number

      parameter of the interpolation.

    Returns this

lerpc

map

  • map(callbackfn: function, thisArg?: any): Float64Array
  • Calls a defined callback function on each element of an array, and returns an array that contains the results.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.

        • (value: number, index: number, array: Float64Array): number
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns number

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns Float64Array

max

  • Math.max between the components of the two vectors

    Parameters

    Returns this

maxc

min

  • Math.min between the components of the two vectors

    Parameters

    Returns this

minc

mul

  • mul(s: number): this
  • usual scalar multiplication of the vector s * u

    Parameters

    • s: number

    Returns this

mulc

neg

  • neg(): this

negc

nil

  • nil(): boolean
  • true if the vector has only exacts 0 as coordinates

    Returns boolean

norm

  • norm(): this

normc

prod

prodc

random

  • random(): this

reduce

  • reduce(callbackfn: function): number
  • reduce(callbackfn: function, initialValue: number): number
  • reduce<U>(callbackfn: function, initialValue: U): U
  • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    Returns number

  • Parameters

    • callbackfn: function
        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    • initialValue: number

    Returns number

  • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Type parameters

    • U

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        • (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array): U
        • Parameters

          • previousValue: U
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns U

    • initialValue: U

      If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

    Returns U

reduceRight

  • reduceRight(callbackfn: function): number
  • reduceRight(callbackfn: function, initialValue: number): number
  • reduceRight<U>(callbackfn: function, initialValue: U): U
  • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    Returns number

  • Parameters

    • callbackfn: function
        • (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array): number
        • Parameters

          • previousValue: number
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns number

    • initialValue: number

    Returns number

  • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

    Type parameters

    • U

    Parameters

    • callbackfn: function

      A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        • (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array): U
        • Parameters

          • previousValue: U
          • currentValue: number
          • currentIndex: number
          • array: Float64Array

          Returns U

    • initialValue: U

      If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

    Returns U

reset0

  • reset0(): this
  • reset to an additive neutral element 0

    Returns this

reset1

  • reset1(): this
  • reset to a multiplicative neutral element 1

    Returns this

reverse

  • reverse(): Float64Array
  • Reverses the elements in an Array.

    Returns Float64Array

round

  • round(): this

roundc

set

  • set(array: ArrayLike<number>, offset?: number): void
  • Sets a value or an array of values.

    Parameters

    • array: ArrayLike<number>

      A typed or untyped array of values to set.

    • Optional offset: number

      The index in the current array at which the values are to be written.

    Returns void

slice

  • slice(start?: number, end?: number): Float64Array
  • Returns a section of an array.

    Parameters

    • Optional start: number

      The beginning of the specified portion of the array.

    • Optional end: number

      The end of the specified portion of the array.

    Returns Float64Array

some

  • some(callbackfn: function, thisArg?: any): boolean
  • Determines whether the specified callback function returns true for any element of an array.

    Parameters

    • callbackfn: function

      A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array.

        • (value: number, index: number, array: Float64Array): boolean
        • Parameters

          • value: number
          • index: number
          • array: Float64Array

          Returns boolean

    • Optional thisArg: any

      An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

    Returns boolean

sort

  • sort(compareFn?: function): this
  • Sorts an array.

    Parameters

    • Optional compareFn: function

      The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.

        • (a: number, b: number): number
        • Parameters

          • a: number
          • b: number

          Returns number

    Returns this

string

  • string(): string

sub

subarray

  • subarray(begin: number, end?: number): Float64Array
  • Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements at begin, inclusive, up to end, exclusive.

    Parameters

    • begin: number

      The index of the beginning of the array.

    • Optional end: number

      The index of the end of the array.

    Returns Float64Array

subc

toLocaleString

  • toLocaleString(): string
  • Converts a number to a string by using the current locale.

    Returns string

toString

  • toString(): string
  • Returns a string representation of an array.

    Returns string

trunc

  • trunc(decimals: number): this
  • truncation of the components given a number of decimals to keep

    Parameters

    • decimals: number

    Returns this

truncc

  • truncc(decimals: number): Vector

values

  • values(): IterableIterator<number>
  • Returns an list of values in the array

    Returns IterableIterator<number>

zero1

  • zero1(): boolean

zero2

  • zero2(): boolean

Generated using TypeDoc