# pex-geom

3.0.1 • Public • Published

# pex-geom

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

## Modules

aabb
index

Re-export aabb, plane, ray and rect

plane
ray
rect

## Typedefs

aabb : Array.<Array.<number>>

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

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]]).

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]).

rect : Array.<Array.<number>>

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

triangle : Array.<Array.<number>>

A triangle defined by three 3D points.

## 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.<module:pex-math/types/typesvec3> | module:pex-math/types/typesTypedArray

### aabb.getCorners(a, [points]) ⇒ Array.<module:pex-math/types/types~vec3>

Returns a list of 8 points from a bounding box.

Kind: static method of aabb

Param Type
a aabb
[points] Array.<module:pex-math/types/types~vec3>

### aabb.center(a, out) ⇒ module:pex-math/types/types~vec3

Returns the center of a bounding box.

Kind: static method of aabb

Param Type
a aabb
out module:pex-math/types/types~vec3

### aabb.size(a, out) ⇒ module:pex-math/types/types~vec3

Returns the size of a bounding box.

Kind: static method of aabb

Param Type
a aabb
out module:pex-math/types/types~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 module:pex-math/types/types~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]) ⇒ module:pex-math/types/types~vec3

Includes a point in a bounding box.

Kind: static method of aabb

Param Type Default Description
a aabb
p module:pex-math/types/types~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

## index

Re-export aabb, plane, ray and rect

## 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 module:pex-math/types/types~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 module:pex-math/types/types~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 module:pex-math/types/types~vec3

### ray.hitTestAABB(ray, aabb) ⇒ boolean

Determines if a ray intersect an AABB bounding box

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.<module:pex-math/types/typesvec2> | module:pex-math/types/typesTypedArray

### rect.getCorners(a, points) ⇒ Array.<module:pex-math/types/types~vec2>

Returns a list of 4 points from a rectangle.

Kind: static method of rect

Param Type
a rect
points Array.<module:pex-math/types/types~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 module:pex-math/types/types~vec2

### rect.size(a, out) ⇒ module:pex-math/types/types~vec2

Returns the size of a rectangle.

Kind: static method of rect

Param Type
a rect
out module:pex-math/types/types~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 module:pex-math/types/types~vec2

### rect.center(a, out) ⇒ rect

Returns the center of a rectangle.

Kind: static method of rect

Param Type
a rect
out module:pex-math/types/types~vec2

### rect.containsPoint(a, p) ⇒ boolean

Checks if a point is inside a rectangle.

Kind: static method of rect

Param Type
a rect
p module:pex-math/types/types~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 module:pex-math/types/types~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) ⇒ module:pex-math/types/types~vec2

Maps a point into the dimensions of a rectangle.

Kind: static method of rect

Param Type
a rect
p module:pex-math/types/types~vec2

### rect.clampPoint(a, p) ⇒ module:pex-math/types/types~vec2

Clamps a point into the dimensions of a rectangle.

Kind: static method of rect

Param Type
a rect
p module:pex-math/types/types~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

## Package Sidebar

### Install

npm i pex-geom

### Repository

github.com/pex-gl/pex-geom

### Homepage

github.com/pex-gl/pex-geom

65

3.0.1

MIT

64.3 kB

16