npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mathools/geometry

v1.0.1

Published

some very usefull math tools

Downloads

5

Readme

@mathools/gemoetry

License Email Donate Donate

@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

  • Magnitude mag([Vector|arguments]) => mag

  • Decibels mag2decibel(magnitude) => mag2decibel

  • 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 Vector
  • decibel() => convert the Vector's magnitude to decibels [scalar]
  • addMag(value) => add the value to the magnitude
  • subMag(value) => subtract the value from the magnitude
  • limit(limit) => constrain the magnitude to be less than limit
  • set([arguments]) => set the components of the Vecotr
  • selfMap(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 components
  • sub([Vector|arguments]) => subtract the arguments 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() => set 1/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 the arguments and multiply it by value
  • 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 to component/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 with decimals approximation
  • floor(decimals) => floor all components with decimals approximation
  • ceil(decimals) => ceil all components with decimals approximation
  • random(decimals) => set every component to random value with decimals 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 Email.

Something gone wrong? Feel free to rise an issue!

Did you like this project and it was usefull? Help me improve my work:

Donate Donate