@mathools/gemoetry
@mathools geometry module for vector calcs
Installing
For install library is easy to install by cloning the repo. You can install trhought npm too: Local installation
npm install @mathools/geometry
Global installation
npm install -g @mathools/geometry
Contains
-
Vector
Vector([arguments]) extends Array
Vector class extends Array with some utils function for Vectors calcs. Function that are allowed only with Vectors takesVector|arguments
as parameter, and automatically convert Array, Vector or arguments Array to a usable Vector. Every function that doesnt return a value, return the Vector object. Every function has both static and instance scope, and can be called in two way:Vector.function( myVector, arguments )
ormyVector.function( arguments )
.
NB: [arguments] isn't an Array of numbers but the Array argument of the function, so it is possible to call a function in three way: function(0,1,2,3)
or function([0,1,2,3])
or function(new Vector(0,1,2,3))
and the result are the same
-
has(index,fallback)
=> return the index-th-component of the vector if present, fallback otherwise [scalar] -
mag(magnitude)
=> if nomagnitude
return the Vector's magnitude [scalar], else set it and return the Vector -
decibel()
=> convert the Vector's magnitude to decibels [scalar] -
addMag(value)
=> add thevalue
to the magnitude -
subMag(value)
=> subtract thevalue
from the magnitude -
limit(limit)
=> constrain the magnitude to be less thanlimit
-
set([arguments])
=> set the components of the Vecotr -
selfMap(callback(currValue,index,array))
=> set the Vector's components with the results of callingcallback
function on every component (Array.map + Vector.set) -
add([Vector|arguments])
=> add thearguments
to the Vector's components -
sub([Vector|arguments])
=> subtract thearguments
to the Vector's components -
mul([arguments])
=> multilpy each component with the arguments -
div([arguments])
=> divide each component with the arguments -
invert()
=> set-component
of each component -
inverse()
=> set1/component
of each component -
normalize()
=> set the magnitude to 1 (Normalized Vector) -
dot(Vector|arguments)
=> return the dot product between two Vectors () -
lerp(value, [Vector|arguments])
=> subract thearguments
and multiply it byvalue
-
copy()
=> return a copy of the Vector -
abs()
=> set each component to his absolute value -
sign()
=> set each component to his sign value -
cut(i)
=> set to 0 the ith-component of the vector -
lead(i)
=> set tocomponent/magnitude
the ith-component of the vector -
project(i)
=> set 0 all components except the ith-component that is setted as magnitude -
round(decimals)
=> round all components withdecimals
approximation -
floor(decimals)
=> floor all components withdecimals
approximation -
ceil(decimals)
=> ceil all components withdecimals
approximation -
random(decimals)
=> set every component to random value withdecimals
approximation -
setAngle(angleXY, angleXZ)
=> set angle of the Vector -
rotate(angleXY, angleXZ)
=> rotate of an angle the Vector -
angle(i)
=> return a the angle of the ith-component with the 0th-component axis (X-Axis) [scalar] -
angle2(i,j)
=> return the angle of the ith-component with the j-th component axis [scalar] -
angleBetween(Vector|arguments)
=> return the angle between two Vector [scalar] -
solidAngle()
=> return an Array of angles[ angleXY, angleXZ, angleYZ ]
[scalar[]] -
spaceAngle()
=> return an Array of angles[ angleX, angleY, angleZ ]
[scalar[]] -
distance(Vector|arguments)
=> return the distance between two Vectors [scalar] -
orthographic(scaleX,scaleZ)
=> orthographic projection - set the Vector's 3D components to[ x*scaleX, y*scaleZ, 0 ]
-
perspective()
=> perspective - set the Vector's 3D components to[ x/z, y/z, 0 ]
Contacts
If you like the project feel free to contact me on my .
Something gone wrong? Feel free to rise an issue!
Did you like this project and it was usefull? Help me improve my work: