Vector represents a vector in a normed vector space. It might be numerical vectors, matrices, or something more complicated.
copy
, clone
, assign
, ...floor
, fill
, abs
, ...add
, sub
, inv
, mul
, prod
, ...lerp
, herp
, ...equal2
, mag
, dist1
, ...addc
, subc
, ...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);
Perform additions, scalar multiplication, linear interpolation and many other common operations. Take a look at the glossary of operations to have an exhaustive list.
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 codev
refers to the parameter vector
in the codethis
c
, the result is a newly created VectorIn 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 :
The first two comparison are based on the following definition of norms :
Given a norm the distance between two vector is defined by :
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.
The size in bytes of each element in the array.
The ArrayBuffer instance referenced by the array.
The length in bytes of the array.
The offset in bytes of the array.
dimension of the vector
The length of the array.
magnitude of the vector ||u||
squared magnitude of the vector u . u
Math.abs
of the components
usual addition between two vectors u + v
native Javascript array containing object's content
assigns components to a vector
Math.ceil
of the components
clone this
vector
linear combination of a scalar and a vector u + s * v
copies a source vector into this
component by component
Returns the this object after copying a section of the array identified by start and end to the same array starting at position target
If target is negative, it is treated as length+target where length is the length of the array.
If start is negative, it is treated as length+start. If end is negative, it is treated as length+end.
If not specified, length of the this object is used as its default value.
derivative between the two vectors with given step (u - v) / ds
distance distance between two vectors d2(u, v)
distance between two vectors given by norm 1 d1(u, v)
squared distance between two vectors given by norm 2 d2(u, v)**2
usual scalar division of the vector u / s
usual dot product of two vector u . v
Returns an array of key, value pairs for every entry in the array
true
if the distance 1 between vectors is 0
true
if the distance 2 between vectors is 0
Determines whether all the members of an array satisfy the specified test.
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.
An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
true
if the vectors have exactly the same coordinates
fills this
vector with a single scalar value s
Returns the elements of an array that meet the condition specified in a callback function.
A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array.
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 the value of the first element in the array where predicate is true, and undefined otherwise.
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.
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 the index of the first element in the array where predicate is true, and -1 otherwise.
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.
If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.
Math.floor
of the components
Performs the specified action for each element in an array.
A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.
An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
Determines whether an array includes a certain element, returning true or false as appropriate.
The element to search for.
The position in this array at which to begin searching for searchElement.
Returns the index of the first occurrence of a value in an array.
The value to locate in the array.
The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
multiplicative inverse of a vector u ** -1
Adds all the elements of an array separated by the specified 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 an list of keys in the array
Returns the index of the last occurrence of a value in an array.
The value to locate in the array.
The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
destination of interpolation
parameter of the interpolation.
Calls a defined callback function on each element of an array, and returns an array that contains the results.
A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
Math.max
between the components of the two vectors
Math.min
between the components of the two vectors
usual scalar multiplication of the vector s * u
usual opposite of the vector -u
true
if the vector has only exacts 0 as coordinates
normalizes a vector u / ||u||
product between two vectors u * v
Math.random
components by components
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.
A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.
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.
A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.
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.
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.
A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.
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.
A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.
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.
reset to an additive neutral element 0
reset to a multiplicative neutral element 1
Reverses the elements in an Array.
Math.round
of the components
Sets a value or an array of values.
A typed or untyped array of values to set.
The index in the current array at which the values are to be written.
Returns a section of an array.
The beginning of the specified portion of the array.
The end of the specified portion of the array.
Determines whether the specified callback function returns true for any element of an array.
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.
An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
Sorts an array.
The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.
string containing a summary of object's content
usual subtraction between two vectors u - v
Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements at begin, inclusive, up to end, exclusive.
The index of the beginning of the array.
The index of the end of the array.
Converts a number to a string by using the current locale.
Returns a string representation of an array.
truncation of the components given a number of decimals to keep
Returns an list of values in the array
true
if the vector has a 0 norm 1
true
if the vector has a 0 norm 2
Generated using TypeDoc
Brief
Vector represents a vector in a normed vector space. It might be numerical vectors, matrices, or something more complicated.
Main Features
copy
,clone
,assign
, ...floor
,fill
,abs
, ...add
,sub
,inv
,mul
,prod
, ...lerp
,herp
, ...equal2
,mag
,dist1
, ...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
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
andv
. it's admitted that :u
refers tothis
in the codev
refers to the parametervector
in the codethis
c
, the result is a newly created VectorComparison 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 :
The first two comparison are based on the following definition of norms :
Given a norm the distance between two vector is defined by :
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 2If you don't know which comparison to use, I recommend you
dist
,equal2
andzero2
to compare objects by default.