
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@mathools/geometry
Advanced tools
@mathools geometry module for vector calcs
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
Magnitude mag([Vector|arguments]) =>
Decibels mag2decibel(magnitude) =>
Vector Vector([arguments]) extends Array
Vector class extends Array with some utils function for Vectors calcs. Function that are allowed only with Vectors takes Vector|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 ) or myVector.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 no magnitude return the Vector's magnitude [scalar], else set it and return the Vectordecibel() => convert the Vector's magnitude to decibels [scalar]addMag(value) => add the value to the magnitudesubMag(value) => subtract the value from the magnitudelimit(limit) => constrain the magnitude to be less than limitset([arguments]) => set the components of the VecotrselfMap(callback(currValue,index,array)) => set the Vector's components with the results of calling callback function on every component (Array.map + Vector.set)add([Vector|arguments]) => add the arguments to the Vector's componentssub([Vector|arguments]) => subtract the arguments to the Vector's componentsmul([arguments]) => multilpy each component with the argumentsdiv([arguments]) => divide each component with the argumentsinvert() => set -component of each componentinverse() => set 1/component of each componentnormalize() => set the magnitude to 1 (Normalized Vector)dot(Vector|arguments) => return the dot product between two Vectors ()lerp(value, [Vector|arguments]) => subract the arguments and multiply it by valuecopy() => return a copy of the Vectorabs() => set each component to his absolute valuesign() => set each component to his sign valuecut(i) => set to 0 the ith-component of the vectorlead(i) => set to component/magnitude the ith-component of the vectorproject(i) => set 0 all components except the ith-component that is setted as magnituderound(decimals) => round all components with decimals approximationfloor(decimals) => floor all components with decimals approximationceil(decimals) => ceil all components with decimals approximationrandom(decimals) => set every component to random value with decimals approximationsetAngle(angleXY, angleXZ) => set angle of the Vectorrotate(angleXY, angleXZ) => rotate of an angle the Vectorangle(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 ]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:
FAQs
some very usefull math tools
We found that @mathools/geometry demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.