Geometry intersection and bounding volume helpers for PEX.
npm install pex-geom








Geometry intersection and bounding volume helpers for PEX.
``bash`
npm install pex-geom
`js
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
``
Array.<Array.<number>>An axis-aligned bounding box defined by two min and max 3D points (eg. [[minX, minY, minZ], [maxX, maxY, maxZ]]).
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]]).
Array.<Array.<number>>A ray defined by a starting 3D point origin and a 3D direction vector (eg. [[originX, originY, originZ], [directionX, directionY, directionZ]).
Array.<Array.<number>>A rectangle defined by two diagonally opposite 2D points (eg. [[minX, minY], [maxX, maxY]]).
Array.<Array.<number>>A triangle defined by three 3D points.
module:pex-math~vec2module:pex-math~vec3module:pex-math~TypedArray- aabb
- .create() ⇒ aabb
- .empty(a) ⇒ rect
- .copy(a) ⇒ aabb
- .set(a, b) ⇒ aabb
- .isEmpty(a) ⇒ boolean
- .fromPoints(a, points) ⇒ aabb
- [.getCorners(a, [points])](#module_aabb.getCorners) ⇒ Array.<vec3>
- .center(a, out) ⇒ vec3
- .size(a, out) ⇒ vec3
- .containsPoint(a, p) ⇒ boolean
- .includeAABB(a, b) ⇒ aabb
- [.includePoint(a, p, [i])](#module_aabb.includePoint) ⇒ vec3
- [.toString(a, [precision])](#module_aabb.toString) ⇒ string
Creates a new bounding box.
Kind: static method of aabb
Reset a bounding box.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
Copies a bounding box.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
Sets a bounding box to another.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
| b | aabb |
Checks if a bounding box is empty.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
Updates a bounding box from a list of points.
Kind: static method of aabb
| Param | Type |
| ------ | ---------------------------------------------------------------------------------- |
| a | aabb |
| points | Array.<vec3> \| TypedArray |
Returns a list of 8 points from a bounding box.
Kind: static method of aabb
| Param | Type |
| -------- | ---------------------------------------- |
| a | aabb |
| [points] | Array.<vec3> |
Returns the center of a bounding box.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
| out | vec3 |
Returns the size of a bounding box.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
| out | vec3 |
Checks if a point is inside a bounding box.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
| p | vec3 |
Includes a bounding box in another.
Kind: static method of aabb
| Param | Type |
| ----- | -------------------------- |
| a | aabb |
| b | aabb |
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 |
Prints a bounding box to a string.
Kind: static method of aabb
| Param | Type | Default |
| ----------- | -------------------------- | -------------- |
| a | aabb | |
| [precision] | number | 4 |
- pex-geom
- .aabb : aabb
- .plane : plane
- .ray : ray
- .rect : rect
Kind: static property of pex-geom
Kind: static property of pex-geom
Kind: static property of pex-geom
Kind: static property of pex-geom
- plane
- .Side : enum
- .create() ⇒ plane
- .side(plane, point) ⇒ number
- [.toString(a, [precision])](#module_plane.toString) ⇒ string
Enum for different side values
Kind: static enum of plane
Read only: true
Creates a new plane
Kind: static method of plane
Returns on which side a point is.
Kind: static method of plane
| Param | Type |
| ----- | ---------------------------- |
| plane | plane |
| point | vec3 |
Prints a plane to a string.
Kind: static method of plane
| Param | Type | Default |
| ----------- | ---------------------------- | -------------- |
| a | plane | |
| [precision] | number | 4 |
- ray
- .Intersections : enum
- .create() ⇒ ray
- .hitTestPlane(ray, plane, out) ⇒ number
- .hitTestTriangle(ray, triangle, out) ⇒ number
- .hitTestAABB(ray, aabb) ⇒ boolean
- .intersectsAABB()
- [.toString(a, [precision])](#module_ray.toString) ⇒ string
Enum for different intersections values
Kind: static enum of ray
Read only: true
Creates a new ray
Kind: static method of ray
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 |
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 |
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 |
Alias for hitTestAABB
Kind: static method of ray
Prints a plane to a string.
Kind: static method of ray
| Param | Type | Default |
| ----------- | ------------------------ | -------------- |
| a | ray | |
| [precision] | number | 4 |
- rect
- .create() ⇒ rect
- .empty(a) ⇒ rect
- .copy(a) ⇒ rect
- .set(a, b) ⇒ rect
- .isEmpty(a) ⇒ boolean
- .fromPoints(a, points) ⇒ rect
- .getCorners(a, points) ⇒ Array.<vec2>
- .scale(a, n) ⇒ rect
- .setSize(a, size) ⇒ rect
- .size(a, out) ⇒ vec2
- .width(a) ⇒ number
- .height(a) ⇒ number
- .aspectRatio(a) ⇒ number
- .setPosition(a, p) ⇒ rect
- .center(a, out) ⇒ rect
- .containsPoint(a, p) ⇒ boolean
- .containsRect(a, b) ⇒ boolean
- .includePoint(a, p) ⇒ rect
- .includeRect(a, b) ⇒ rect
- .mapPoint(a, p) ⇒ vec2
- .clampPoint(a, p) ⇒ vec2
- [.toString(a, [precision])](#module_rect.toString) ⇒ string
Creates a new rectangle.
Kind: static method of rect
Reset a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
Copies a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
Sets a rectangle to another.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| b | rect |
Checks if a rectangle is empty.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
Updates a rectangle from a list of points.
Kind: static method of rect
| Param | Type |
| ------ | ---------------------------------------------------------------------------------- |
| a | rect |
| points | Array.<vec2> \| TypedArray |
Returns a list of 4 points from a rectangle.
Kind: static method of rect
| Param | Type |
| ------ | ---------------------------------------- |
| a | rect |
| points | Array.<vec2> |
Scales a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| n | number |
Sets the size of a rectangle using width and height.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| size | vec2 |
Returns the size of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| out | vec2 |
Returns the width of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
Returns the height of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
Returns the aspect ratio of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
Sets the position of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| p | vec2 |
Returns the center of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| out | vec2 |
Checks if a point is inside a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| p | vec2 |
Checks if a rectangle is inside another rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| b | rect |
Includes a point in a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| p | vec2 |
Includes a rectangle in another rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| b | rect |
Maps a point into the dimensions of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| p | vec2 |
Clamps a point into the dimensions of a rectangle.
Kind: static method of rect
| Param | Type |
| ----- | -------------------------- |
| a | rect |
| p | vec2 |
Prints a rect to a string.
Kind: static method of rect
| Param | Type | Default |
| ----------- | -------------------------- | -------------- |
| a | rect | |
| [precision] | number | 4 |
Array.<Array.<number>>An axis-aligned bounding box defined by two min and max 3D points (eg. [[minX, minY, minZ], [maxX, maxY, maxZ]]).
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]]).
Array.<Array.<number>>A ray defined by a starting 3D point origin and a 3D direction vector (eg. [[originX, originY, originZ], [directionX, directionY, directionZ]).
Array.<Array.<number>>A rectangle defined by two diagonally opposite 2D points (eg. [[minX, minY], [maxX, maxY]]).
Array.<Array.<number>>A triangle defined by three 3D points.
module:pex-math~vec2module:pex-math~vec3module:pex-math~TypedArrayKind: global typedef
MIT. See license file.