# OBB

Represents an oriented bounding box (OBB) in 3D space.

## Import

OBB is an addon, and must be imported explicitly, see Installation#Addons.

    import { OBB } from 'three/addons/math/OBB.js';

## Constructor

### new OBB ( center : Vector3, halfSize : Vector3, rotation : Matrix3 )

Constructs a new OBB.

center | The center of the OBB.
halfSize | Positive halfwidth extents of the OBB along each axis.
rotation | The rotation of the OBB.

## Properties

### .center : Vector3

The center of the OBB.

### .halfSize : Vector3

Positive halfwidth extents of the OBB along each axis.

### .rotation : Matrix3

The rotation of the OBB.

## Methods

### .applyMatrix4 ( matrix : Matrix4 ) : OBB

Applies the given transformation matrix to this OBB. This method can be used to transform the bounding volume with the world matrix of a 3D object in order to keep both entities in sync.

matrix | The matrix to apply.

Returns: A reference of this OBB.

### .clampPoint ( point : Vector3, target : Vector3 ) : Vector3

Clamps the given point within the bounds of this OBB.

point | The point that should be clamped within the bounds of this OBB.
target | The target vector that is used to store the method's result.

Returns:

- The clamped point.

### .clone () : OBB

Returns a new OBB with copied values from this instance.

Returns: A clone of this instance.

### .containsPoint ( point : Vector3 ) : boolean

Returns `true` if the given point lies within this OBB.

point | The point to test.

Returns:

- Whether the given point lies within this OBB or not.

### .copy ( obb : OBB ) : OBB

Copies the values of the given OBB to this instance.

obb | The OBB to copy.

Returns: A reference to this OBB.

### .equals ( obb : OBB ) : boolean

Returns `true` if the given OBB is equal to this OBB.

obb | The OBB to test.

Returns: Whether the given OBB is equal to this OBB or not.

### .fromBox3 ( box3 : Box3 ) : OBB

Defines an OBB based on the given AABB.

box3 | The AABB to setup the OBB from.

Returns: A reference of this OBB.

### .getSize ( target : Vector3 ) : Vector3

Returns the size of this OBB.

target | The target vector that is used to store the method's result.

Returns: The size.

### .intersectRay ( ray : Ray, target : Vector3 ) : Vector3

Performs a ray/OBB intersection test and stores the intersection point in the given 3D vector.

ray | The ray to test.
target | The target vector that is used to store the method's result.

Returns: The intersection point. If no intersection is detected, `null` is returned.

### .intersectsBox3 ( box3 : Box3 ) : boolean

Returns `true` if the given AABB intersects this OBB.

box3 | The AABB to test.

Returns:

- Whether the given AABB intersects this OBB or not.

### .intersectsOBB ( obb : OBB, epsilon : number ) : boolean

Returns `true` if the given OBB intersects this OBB.

obb | The OBB to test.
epsilon | A small value to prevent arithmetic errors. Default is `Number.EPSILON`.

Returns:

- Whether the given OBB intersects this OBB or not.

### .intersectsPlane ( plane : Plane ) : boolean

Returns `true` if the given plane intersects this OBB.

plane | The plane to test.

Returns: Whether the given plane intersects this OBB or not.

### .intersectsRay ( ray : Ray ) : boolean

Returns `true` if the given ray intersects this OBB.

ray | The ray to test.

Returns: Whether the given ray intersects this OBB or not.

### .intersectsSphere ( sphere : Sphere ) : boolean

Returns `true` if the given bounding sphere intersects this OBB.

sphere | The bounding sphere to test.

Returns:

- Whether the given bounding sphere intersects this OBB or not.

### .set ( center : Vector3, halfSize : Vector3, rotation : Matrix3 ) : OBB

Sets the OBBs components to the given values.

center | The center of the OBB.
halfSize | Positive halfwidth extents of the OBB along each axis.
rotation | The rotation of the OBB.

Returns: A reference to this OBB.

## Source

examples/jsm/math/OBB.js