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

pex-geom

v3.0.2

Published

Geometry intersection and bounding volume helpers for PEX.

Downloads

453

Readme

pex-geom

npm version stability-stable npm minzipped size dependencies types Conventional Commits styled with prettier linted with eslint license

Geometry intersection and bounding volume helpers for PEX.

Installation

npm install pex-geom

Usage

import { ray, aabb } from "pex-geom";

const box = aabb.fromPoints([
  [-1, -1, -1],
  [1, 1, 1],
]);

const intersect = ray.hitTestAABB(
  [
    [0, 0, 0],
    [0, 1, 0],
  ],
  box
);
console.log(intersect);
// => true

API

Modules

Typedefs

pex-geom

pex-geom.aabb : aabb

Kind: static property of pex-geom

pex-geom.plane : plane

Kind: static property of pex-geom

pex-geom.ray : ray

Kind: static property of pex-geom

pex-geom.rect : rect

Kind: static property of pex-geom

aabb

aabb.create() ⇒ aabb

Creates a new bounding box.

Kind: static method of aabb

aabb.empty(a) ⇒ rect

Reset a bounding box.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb |

aabb.copy(a) ⇒ aabb

Copies a bounding box.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb |

aabb.set(a, b) ⇒ aabb

Sets a bounding box to another.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb | | b | aabb |

aabb.isEmpty(a) ⇒ boolean

Checks if a bounding box is empty.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb |

aabb.fromPoints(a, points) ⇒ aabb

Updates a bounding box from a list of points.

Kind: static method of aabb

| Param | Type | | ------ | ---------------------------------------------------------------------------------- | | a | aabb | | points | Array.<vec3> | TypedArray |

aabb.getCorners(a, [points]) ⇒ Array.<vec3>

Returns a list of 8 points from a bounding box.

Kind: static method of aabb

| Param | Type | | -------- | ---------------------------------------- | | a | aabb | | [points] | Array.<vec3> |

aabb.center(a, out) ⇒ vec3

Returns the center of a bounding box.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb | | out | vec3 |

aabb.size(a, out) ⇒ vec3

Returns the size of a bounding box.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb | | out | vec3 |

aabb.containsPoint(a, p) ⇒ boolean

Checks if a point is inside a bounding box.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb | | p | vec3 |

aabb.includeAABB(a, b) ⇒ aabb

Includes a bounding box in another.

Kind: static method of aabb

| Param | Type | | ----- | -------------------------- | | a | aabb | | b | aabb |

aabb.includePoint(a, p, [i]) ⇒ vec3

Includes a point in a bounding box.

Kind: static method of aabb

| Param | Type | Default | Description | | ----- | -------------------------- | -------------- | ------------------------- | | a | aabb | | | | p | vec3 | | | | [i] | number | 0 | offset in the point array |

aabb.toString(a, [precision]) ⇒ string

Prints a bounding box to a string.

Kind: static method of aabb

| Param | Type | Default | | ----------- | -------------------------- | -------------- | | a | aabb | | | [precision] | number | 4 |

plane

plane.Side : enum

Enum for different side values

Kind: static enum of plane Read only: true

plane.create() ⇒ plane

Creates a new plane

Kind: static method of plane

plane.side(plane, point) ⇒ number

Returns on which side a point is.

Kind: static method of plane

| Param | Type | | ----- | ---------------------------- | | plane | plane | | point | vec3 |

plane.toString(a, [precision]) ⇒ string

Prints a plane to a string.

Kind: static method of plane

| Param | Type | Default | | ----------- | ---------------------------- | -------------- | | a | plane | | | [precision] | number | 4 |

ray

ray.Intersections : enum

Enum for different intersections values

Kind: static enum of ray Read only: true

ray.create() ⇒ ray

Creates a new ray

Kind: static method of ray

ray.hitTestPlane(ray, plane, out) ⇒ number

Determines if a ray intersect a plane and set intersection point

Kind: static method of ray See: https://www.cs.princeton.edu/courses/archive/fall00/cs426/lectures/raycast/sld017.htm

| Param | Type | | ----- | ---------------------------- | | ray | ray | | plane | plane | | out | vec3 |

ray.hitTestTriangle(ray, triangle, out) ⇒ number

Determines if a ray intersect a triangle and set intersection point

Kind: static method of ray See: http://geomalgorithms.com/a06-_intersect-2.html#intersect3D_RayTriangle()

| Param | Type | | -------- | ---------------------------------- | | ray | ray | | triangle | triangle | | out | vec3 |

ray.hitTestAABB(ray, aabb) ⇒ boolean

Determines if a ray intersect an AABB bounding box

Kind: static method of ray See: http://gamedev.stackexchange.com/questions/18436/most-efficient-aabb-vs-ray-collision-algorithms

| Param | Type | | ----- | -------------------------- | | ray | ray | | aabb | aabb |

ray.intersectsAABB()

Alias for hitTestAABB

Kind: static method of ray

ray.toString(a, [precision]) ⇒ string

Prints a plane to a string.

Kind: static method of ray

| Param | Type | Default | | ----------- | ------------------------ | -------------- | | a | ray | | | [precision] | number | 4 |

rect

rect.create() ⇒ rect

Creates a new rectangle.

Kind: static method of rect

rect.empty(a) ⇒ rect

Reset a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect |

rect.copy(a) ⇒ rect

Copies a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect |

rect.set(a, b) ⇒ rect

Sets a rectangle to another.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | b | rect |

rect.isEmpty(a) ⇒ boolean

Checks if a rectangle is empty.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect |

rect.fromPoints(a, points) ⇒ rect

Updates a rectangle from a list of points.

Kind: static method of rect

| Param | Type | | ------ | ---------------------------------------------------------------------------------- | | a | rect | | points | Array.<vec2> | TypedArray |

rect.getCorners(a, points) ⇒ Array.<vec2>

Returns a list of 4 points from a rectangle.

Kind: static method of rect

| Param | Type | | ------ | ---------------------------------------- | | a | rect | | points | Array.<vec2> |

rect.scale(a, n) ⇒ rect

Scales a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | n | number |

rect.setSize(a, size) ⇒ rect

Sets the size of a rectangle using width and height.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | size | vec2 |

rect.size(a, out) ⇒ vec2

Returns the size of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | out | vec2 |

rect.width(a) ⇒ number

Returns the width of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect |

rect.height(a) ⇒ number

Returns the height of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect |

rect.aspectRatio(a) ⇒ number

Returns the aspect ratio of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect |

rect.setPosition(a, p) ⇒ rect

Sets the position of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | p | vec2 |

rect.center(a, out) ⇒ rect

Returns the center of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | out | vec2 |

rect.containsPoint(a, p) ⇒ boolean

Checks if a point is inside a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | p | vec2 |

rect.containsRect(a, b) ⇒ boolean

Checks if a rectangle is inside another rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | b | rect |

rect.includePoint(a, p) ⇒ rect

Includes a point in a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | p | vec2 |

rect.includeRect(a, b) ⇒ rect

Includes a rectangle in another rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | b | rect |

rect.mapPoint(a, p) ⇒ vec2

Maps a point into the dimensions of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | p | vec2 |

rect.clampPoint(a, p) ⇒ vec2

Clamps a point into the dimensions of a rectangle.

Kind: static method of rect

| Param | Type | | ----- | -------------------------- | | a | rect | | p | vec2 |

rect.toString(a, [precision]) ⇒ string

Prints a rect to a string.

Kind: static method of rect

| Param | Type | Default | | ----------- | -------------------------- | -------------- | | a | rect | | | [precision] | number | 4 |

aabb : Array.<Array.<number>>

An axis-aligned bounding box defined by two min and max 3D points (eg. [[minX, minY, minZ], [maxX, maxY, maxZ]]).

Kind: global typedef

plane : Array.<Array.<number>>

A plane defined by a 3D point and a normal vector perpendicular to the plane’s surface (eg. [[pointX, pointY, pointZ], [normalX, normalY, normalZ]]).

Kind: global typedef

ray : Array.<Array.<number>>

A ray defined by a starting 3D point origin and a 3D direction vector (eg. [[originX, originY, originZ], [directionX, directionY, directionZ]).

Kind: global typedef

rect : Array.<Array.<number>>

A rectangle defined by two diagonally opposite 2D points (eg. [[minX, minY], [maxX, maxY]]).

Kind: global typedef

triangle : Array.<Array.<number>>

A triangle defined by three 3D points.

Kind: global typedef

vec2 : module:pex-math~vec2

Kind: global typedef

vec3 : module:pex-math~vec3

Kind: global typedef

TypedArray : module:pex-math~TypedArray

Kind: global typedef

License

MIT. See license file.