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

math2d

v4.0.1

Published

Two dimensional vector math library for JavaScript. Built for performance in computation-heavy real-time engines without sacrificing usability. Supports tree shaking and dead code removal to avoid bloating client-side bundles. Zero dependencies.

Downloads

1,130

Readme

math2d

Two dimensional vector math library for JavaScript. Built for performance in computation-heavy real-time engines without sacrificing usability. Supports tree shaking and dead code removal to avoid bloating client-side bundles. Zero dependencies.

Getting Started

$ yarn add math2d
import { _vec, mat2dFromRotation, vecTransformBy } from "math2d";

const threeFour = _vec(3, 4);
const spin = mat2dFromRotation(Math.PI / 4);
console.log(vecTransformBy(threeFour, spin));

API

Box Functions

  • _box: shorthand for defining a Box from minX, minY, maxX, maxY
  • boxAlloc: Creates a new Box object in memory, with all values initialized to NaN
  • boxClone: Copies values from an existing IBox into a new box
  • boxContainsBox: Determines whether the second box is completely enclosed in the first
  • boxContainsPoint: Determines whether the box contains a given point
  • boxEncapsulate: Grows the box to include a given point
  • boxEnclosingPoints: Computes the smallest bounding box that contains all of the provided points
  • boxGetOutCode: Determines where the specified point lies in relation to the given box
  • boxGrow: Expands a box by a given amount in all directions
  • boxIntersection: Computes the area intersection of the two box regions
  • boxIntersectsBox: Determines whether two boxes overlap
  • boxIsEmpty: Determines whether this box represents an empty area
  • boxReset: Construct a new box given minX, minY, maxX, and maxY bounding values
  • boxScale: Scales a box by a fixed scalar in both directions
  • boxTransformBy: Compute the bounds of the image of this box after applying a 2D affine transformation
  • boxTranslate: Translate a box by an offset in the x- and y- directions
  • boxUnion: Compute the smallest bounding box that contains both given boxes

Intersection Result Functions

  • intersectionResultAlloc: Creates a new IntersectionResult object in memory, with all values initialized to false and NaN
  • intersectionResultClone: Copies the values from the given intersection into a new intersection object
  • intersectionResultReset: Construct a new intersection given exists, x, y, t0, and t1 values

Mat2d Functions

  • _mat2d: shorthand for defining a Mat2d from a, b, c, d, tx, ty
  • mat2dAlloc: Creates a new mat2d object in memory, with all values initialized to NaN
  • mat2dClone: Copies the values from the given matrix into a new matrix
  • mat2dDeterminant: Computes the determinant of the affine matrix
  • mat2dFromRotation: Computes the affine transform corresponding to a given rotation, in radians
  • mat2dFromTranslation: Computes the affine transform corresponding to a given (tx, ty) translation
  • mat2dIdentity: Returns the identity affine matrix, [1 0 0 1 0 0]
  • mat2dInvert: Computes the inverse of the given 2d affine matrix
  • mat2dIsOrthogonal: Returns whether the matrix is an orthogonal matrix
  • mat2dIsTranslationOnly: Returns whether the matrix corresponds to only a translation
  • mat2dMulMat2d: Computes the result of affine matrix multiplication m1 × m2
  • mat2dReset: Construct a new matrix given component values
  • mat2dRotate: Applies a rotation in radians to the given matrix, returning the result
  • mat2dScale: Applies a scaling transform on top of the given affine matrix, returning the result
  • mat2dTranslate: Applies a translation on top of the given matrix, returning the result

Nearest Point Result Functions

  • nearestPointResultAlloc: Creates a new NearestPointResult object in memory, with all values initialized to NaN
  • nearestPointResultClone: Copies the values from the given NearestPointResult into a new NearestPointResult object
  • nearestPointResultReset: Construct a new intersection given exists, x, y, t0, and t1 values

Polyline Functions

  • polylineAlloc: Creates a new Array object in memory to hold Polyline data. Its initial length is 0
  • polylineClose: Repeats the polyline's first vertex to form a closed path
  • polylineContainsPoint: undefined
  • polylineContainsPointInside: Determines whether the point is inside the given polygon, using the even-odd fill rule
  • polylineGetBounds: Computes bounding box of polyline's geometry
  • polylineGetDistanceAtT: Computes the Euclidean distance traveled along the polyline's geometry to get to the parametric point at t
  • polylineGetLength: Computes total length of polyline
  • polylineGetNumSegments: Returns the number of individual line segments in this polyline
  • polylineGetNumVertices: Returns the number of vertices in this polyline
  • polylineGetPointAtT: Computes a point along the polyline, parameterized according to linear interpolation between adjacent vertices
  • polylineGetSegment: Returns a polyline's segment by given index, starting at 0
  • polylineGetSegmentLength: Computes the length of one of a polyline's segments by index, starting at 0
  • polylineGetTAtDistance: Computes the parametric value t along the polyline corresponding to a distance d
  • polylineGetVertex: Retrieves a vertex from this polyline's geometry, starting at index 0
  • polylineIntersectRay: Computes all locations at which a polyline crosses a given ray
  • polylineIntersectSegment: Computes all locations at which a polyline crosses a given line segment
  • polylineIsClosed: Returns whether the polyline's last vertex equals its first
  • polylineNearestDistanceSqToPoint: Finds the closest the polyline comes to a given reference point
  • polylineTransformBy: Transforms a polyline by an affine matrix
  • polylineTrim: Trims a polyline to a range of its t parameter

Ray Functions

  • _ray: shorthand for defining a Ray from x0, y0, dirX, dirY
  • rayAlloc: Creates a new Ray object in memory, with all values initialized to NaN
  • rayClone: Copies the values from the given ray into a new ray
  • rayContainsPoint: Determines if the point is on the ray
  • rayGetPointAtT: Gets a point along the ray, parameterized according to distance along its direction vector
  • rayIntersectPolyline: Computes all locations at which a ray crosses a given polyline
  • rayIntersectRay: Computes the intersection point between the two rays, if it exists
  • rayIntersectSegment: Computes the intersection point between the ray and the segment, if it exists
  • rayLookAt: Constructs a ray from an initial point, pointing in the direction of a target point
  • rayNearestDistanceSqToPoint: Determines the closest the ray comes to a given reference point
  • rayProjectPoint: Projects a point onto the given line, returning the distance t along the line where it falls
  • rayReset: Construct a new ray given an (x0, y0) initial point and (dirX, dirY) direction vector
  • rayTransformBy: Transforms a ray by an affine matrix
  • rayWhichSide: Computes on which side of the ray (as a line) a given point lies

Segment Functions

  • _segment: shorthand for defining a Segment from x0, y0, x1, y1
  • segmentAlloc: Creates a new Segment object in memory, with all values initialized to NaN
  • segmentGetEndpoint0: Retrieves the starting endpoint (t = 0) of the segment, as a vector
  • segmentGetEndpoint1: Retrives the ending endpoint (t = 1) of the segment, as a vector
  • segmentGetLength: Computes the length of the line segment
  • segmentGetLengthSq: Computes the squared length of the line segment
  • segmentGetPointAtT: Gets a point along the line segment, parameterized according to linear interpolation between its endpoints
  • segmentIntersectPolyline: Computes all locations at which a line segment meets a given polyline
  • segmentIntersectRay: Computes the intersection point between the ray and the segment, if it exists
  • segmentIntersectSegment: Computes the intersection point between the two line segments, if it exists
  • segmentNearestDistanceSqToPoint: Finds the closest the segment comes to a given reference point
  • segmentReset: Construct a new line segment given an (x0, y0) starting vertex and (x1, y1) ending vertex. The two points are allowed to be the same
  • segmentReverse: Computes the reverse of the segment, i.e. swapping its starting vertex and ending vertex

Vec Functions

  • _vec: shorthand for defining a Vec from x, y
  • vecAdd: Computes the result of adding the two given vectors
  • vecAlloc: Creates a new Vec object in memory, with all values initialized to NaN
  • vecClone: Copies the values from the given vector into a new vector
  • vecCross: Computes the two-dimensional cross product of the two vectors
  • vecDistance: Computes the straight-line (Euclidean) distance between the two points
  • vecDistanceSq: Computes the squared straight-line (i.e. Euclidean) distance between the two points
  • vecDot: Computes the dot product of the two vectors, i.e. u.x * v.x + u.y * v.y
  • vecGetLength: Computes the straight-line length (i.e. Euclidean norm) of the given vector
  • vecGetLengthSq: Computes the squared straight-line length (i.e. square of the Euclidean norm) of the given vector
  • vecLerp: Performs a linear interpolation between the two vectors. The r parameter is allowed to be outside [0, 1]
  • vecNormalize: Normalizes the vector to be length 1. If the given vector is the zero-vector, this method returns (NaN, NaN)
  • vecPerp: Computes the perp of the given vector, as defined by vecPerp(a, b) = (-b, a). This is equivalent to a counter-clockwise rotation in the standard plane
  • vecReset: Construct a new vector given an x and y value
  • vecScale: Scales both coordinates of this vector by a given scalar
  • vecSubtract: Computes u - v, i.e. subtracting the second vector from the first
  • vecTransformBy: Multiplies the vector by an affine matrix