pex-geom v3.0.2
pex-geom
Geometry intersection and bounding volume helpers for PEX.
Installation
npm install pex-geomUsage
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);
// => trueAPI
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
- .empty(a) ⇒ rect
- .copy(a) ⇒ aabb
- .set(a, b) ⇒ aabb
- .isEmpty(a) ⇒ boolean
- .fromPoints(a, points) ⇒ aabb
- .getCorners(a, [points]) ⇒ Array.<vec3>
- .center(a, out) ⇒ vec3
- .size(a, out) ⇒ vec3
- .containsPoint(a, p) ⇒ boolean
- .includeAABB(a, b) ⇒ aabb
- .includePoint(a, p, [i]) ⇒ vec3
- .toString(a, [precision]) ⇒ string
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
- .create() ⇒ plane
- .side(plane, point) ⇒ number
- .toString(a, [precision]) ⇒ string
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
- .create() ⇒ ray
- .hitTestPlane(ray, plane, out) ⇒ number
- .hitTestTriangle(ray, triangle, out) ⇒ number
- .hitTestAABB(ray, aabb) ⇒ boolean
- .intersectsAABB()
- .toString(a, [precision]) ⇒ string
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
- .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]) ⇒ string
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.
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
8 years ago
8 years ago
8 years ago
9 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago