Pt is a subclass of standard Float32Array
with additional properties and functions to support vector and geometric calculations.
See Pt guide for details.
Create a Pt. If no parameter is provided, this will instantiate a Pt with 2 dimensions [0, 0].
Note that new Pt(3)
will only instantiate Pt with length of 3 (ie, same as new Float32Array(3)
). If you need a Pt with 1 dimension of value 3, use new Pt([3])
.
a list of numeric parameters, an array of numbers, or an object with {x,y,z,w} properties
new Pt()
, new Pt(1,2,3,4,5)
, new Pt([1,2])
, new Pt({x:0, y:1})
, new Pt(pt)
Concatenate this Pt with addition dimensional values and return as a new Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
3D Cross product of this Pt and another Pt. Return results as a new Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
2D Cross product of this Pt and another Pt. Return results as a new Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Get a new Pt that has the maximum dimensional values of this Pt and another Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Get a new Pt that has the minimum dimensional values of this Pt and another Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Like Pt.multiply
, but returns result as a new Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Calculate vector projection of this Pt on another Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
the projection vector as a Pt
Like Pt.subtract
, but returns result as a new Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Take specific dimensional values from this Pt and create a new Pt.
a string such as "xy" (use Const.xy) or an array to specify indices
Get a new unit vector from this Pt.
Add scalar or vector values to this Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Get angle of this Pt from origin.
a string such as "xy" (use Const.xy) or an array to specify index for two dimensions
Get the angle between this and another Pt.
the other Pt
a string such as "xy" (use Const.xy) or an array to specify index for two dimensions
Divide this Pt over scalar or vector values (as element-wise).
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Dot product of this Pt and another Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Check if another Pt is equal to this Pt, within a threshold.
another Pt to compare with
a threshold value within which the two Pts are considered equal. Default is 0.000001.
Create an n-dimensional Pt with either default value or random values.
number of dimensions
optional default value to fill the dimensions
if true
, randomize the value between 0 to default value
Find the maximum value across all dimensions in this Pt.
an object with value
and index
which returns the maximum value and its dimensional index
Find the minimum value across all dimensions in this Pt.
an object with value
and index
which returns the minimum value and its dimensional index
Multiply scalar or vector values (as element-wise) with this Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Create an operation using this Pt, passing this Pt into a custom function's first parameter. See the Op guide for details.
any function that takes a Pt as its first parameter
a resulting function that takes other parameters required in fn
let myOp = pt.op( fn ); let result = myOp( [1,2,3] );
This combines a series of operations into an array. See the Op guide for details.
an array of functions for op
an array of resulting functions
let myOps = pt.ops([fn1, fn2, fn3]); let results = myOps.map( (op) => op([1,2,3]) );
Calculate scalar projection.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Reflect this Pt along a 2D line.
a Group of 2 Pts that defines a line for reflection
optional axis such as "yz" to define a 2D plane of reflection
Rotate this Pt from origin or from an anchor point in 2D.
rotate angle
optional anchor point to scale from
optional string such as "yz" to specify a 2D plane
Scale this Pt from origin or from an anchor point.
scale ratio
optional anchor point to scale from
Shear this Pt from origin or from an anchor point in 2D.
optional anchor point to scale from
optional string such as "yz" to specify a 2D plane
Subtract scalar or vector values from this Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Update the values of this Pt.
can be either a list of numbers, an array, a Pt, or an object with {x,y,z,w} properties
Update the values of this Pt to point at a specific angle.
target angle in radian
Optional magnitude if known. If not provided, it'll calculate and use this Pt's magnitude.
If true
, add it from this Pt's current position. Default is false
which update the position from origin (0,0). See also Geom.rotate2D
for rotating a point from another anchor point.
A string representation of this Pt. Eg, "Pt(1, 2, 3)".
Float32Array.toString
in src/Pt.tsConvert to a unit vector, which is a normalized vector whose magnitude equals to 1.
Optional: if the magnitude is known, pass it as a parameter to avoid duplicate calculation.
Float32Array.[Symbol.iterator]
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.
Float32Array.copyWithin
Returns an array of key, value pairs for every entry in the array
Float32Array.entries
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 predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value false, or until the end of the array.
An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.
Float32Array.every
Changes all array elements from start
to end
index to a static value
and returns the modified array
value to fill array section with
index to start filling the array at. If start is negative, it is treated as length+start where length is the length of the array.
index to stop filling the array at. If end is negative, it is treated as length+end.
Float32Array.fill
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 predicate function one time for each element in the array.
An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.
Float32Array.filter
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.
Float32Array.find
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.
Float32Array.findIndex
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.
Float32Array.forEach
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.
Float32Array.includes
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.
Float32Array.indexOf
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.
Float32Array.join
Returns an list of keys in the array
Float32Array.keys
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.
Float32Array.lastIndexOf
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.
Float32Array.map
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.
Float32Array.reduce
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.
Float32Array.reduceRight
Reverses the elements in an Array.
Float32Array.reverse
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.
Float32Array.set
Returns a section of an array.
The beginning of the specified portion of the array.
The end of the specified portion of the array. This is exclusive of the element at the index 'end'.
Float32Array.slice
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 predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value true, or until the end of the array.
An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.
Float32Array.some
Sorts an array.
Function used to determine the order of the elements. It is expected to return a negative value if first argument is less than second argument, zero if they're equal and a positive value otherwise. If omitted, the elements are sorted in ascending order.
[11,2,22,1].sort((a, b) => a - b)
Float32Array.sort
Gets a new Float32Array 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.
Float32Array.subarray
Converts a number to a string by using the current locale.
Float32Array.toLocaleString
Returns the primitive value of the specified object.
Float32Array.valueOf
Returns an list of values in the array
Float32Array.values