OrientedBoundingBox

new Cesium.OrientedBoundingBox(center, halfAxes)

Creates an instance of an OrientedBoundingBox. An OrientedBoundingBox of some object is a closed and convex cuboid. It can provide a tighter bounding volume than BoundingSphere or AxisAlignedBoundingBox in many cases.
Name Type Default Description
center Cartesian3 Cartesian3.ZERO optional The center of the box.
halfAxes Matrix3 Matrix3.ZERO optional The three orthogonal half-axes of the bounding box. Equivalently, the transformation matrix, to rotate and scale a 0x0x0 cube centered at the origin.
Example:
// Create an OrientedBoundingBox using a transformation matrix, a position where the box will be translated, and a scale.
const center = new Cesium.Cartesian3(1.0, 0.0, 0.0);
const halfAxes = Cesium.Matrix3.fromScale(new Cesium.Cartesian3(1.0, 3.0, 2.0), new Cesium.Matrix3());

const obb = new Cesium.OrientedBoundingBox(center, halfAxes);
See:

Members

static Cesium.OrientedBoundingBox.packedLength : Number

The number of elements used to pack the object into an array.
The center of the box.
Default Value: Cartesian3.ZERO
The transformation matrix, to rotate the box to the right position.
Default Value: Matrix3.ZERO

Methods

static Cesium.OrientedBoundingBox.clone(box, result)OrientedBoundingBox

Duplicates a OrientedBoundingBox instance.
Name Type Description
box OrientedBoundingBox The bounding box to duplicate.
result OrientedBoundingBox optional The object onto which to store the result.
Returns:
The modified result parameter or a new OrientedBoundingBox instance if none was provided. (Returns undefined if box is undefined)

static Cesium.OrientedBoundingBox.computeCorners(box, result)Array.<Cartesian3>

Computes the eight corners of an oriented bounding box. The corners are ordered by (-X, -Y, -Z), (-X, -Y, +Z), (-X, +Y, -Z), (-X, +Y, +Z), (+X, -Y, -Z), (+X, -Y, +Z), (+X, +Y, -Z), (+X, +Y, +Z).
Name Type Description
box OrientedBoundingBox The oriented bounding box.
result Array.<Cartesian3> optional An array of eight Cartesian3 instances onto which to store the corners.
Returns:
The modified result parameter or a new array if none was provided.

static Cesium.OrientedBoundingBox.computePlaneDistances(box, position, direction, result)Interval

The distances calculated by the vector from the center of the bounding box to position projected onto direction.
If you imagine the infinite number of planes with normal direction, this computes the smallest distance to the closest and farthest planes from position that intersect the bounding box.
Name Type Description
box OrientedBoundingBox The bounding box to calculate the distance to.
position Cartesian3 The position to calculate the distance from.
direction Cartesian3 The direction from position.
result Interval optional A Interval to store the nearest and farthest distances.
Returns:
The nearest and farthest distances on the bounding box from position in direction.

static Cesium.OrientedBoundingBox.computeTransformation(box, result)Matrix4

Computes a transformation matrix from an oriented bounding box.
Name Type Description
box OrientedBoundingBox The oriented bounding box.
result Matrix4 The object onto which to store the result.
Returns:
The modified result parameter or a new Matrix4 instance if none was provided.

static Cesium.OrientedBoundingBox.distanceSquaredTo(box, cartesian)Number

Computes the estimated distance squared from the closest point on a bounding box to a point.
Name Type Description
box OrientedBoundingBox The box.
cartesian Cartesian3 The point
Returns:
The distance squared from the oriented bounding box to the point. Returns 0 if the point is inside the box.
Example:
// Sort bounding boxes from back to front
boxes.sort(function(a, b) {
    return Cesium.OrientedBoundingBox.distanceSquaredTo(b, camera.positionWC) - Cesium.OrientedBoundingBox.distanceSquaredTo(a, camera.positionWC);
});

static Cesium.OrientedBoundingBox.equals(left, right)Boolean

Compares the provided OrientedBoundingBox componentwise and returns true if they are equal, false otherwise.
Name Type Description
left OrientedBoundingBox The first OrientedBoundingBox.
right OrientedBoundingBox The second OrientedBoundingBox.
Returns:
true if left and right are equal, false otherwise.

static Cesium.OrientedBoundingBox.fromPoints(positions, result)OrientedBoundingBox

Computes an instance of an OrientedBoundingBox of the given positions. This is an implementation of Stefan Gottschalk's Collision Queries using Oriented Bounding Boxes solution (PHD thesis). Reference: http://gamma.cs.unc.edu/users/gottschalk/main.pdf
Name Type Description
positions Array.<Cartesian3> optional List of Cartesian3 points that the bounding box will enclose.
result OrientedBoundingBox optional The object onto which to store the result.
Returns:
The modified result parameter or a new OrientedBoundingBox instance if one was not provided.
Example:
// Compute an object oriented bounding box enclosing two points.
const box = Cesium.OrientedBoundingBox.fromPoints([new Cesium.Cartesian3(2, 0, 0), new Cesium.Cartesian3(-2, 0, 0)]);

static Cesium.OrientedBoundingBox.fromRectangle(rectangle, minimumHeight, maximumHeight, ellipsoid, result)OrientedBoundingBox

Computes an OrientedBoundingBox that bounds a Rectangle on the surface of an Ellipsoid. There are no guarantees about the orientation of the bounding box.
Name Type Default Description
rectangle Rectangle The cartographic rectangle on the surface of the ellipsoid.
minimumHeight Number 0.0 optional The minimum height (elevation) within the tile.
maximumHeight Number 0.0 optional The maximum height (elevation) within the tile.
ellipsoid Ellipsoid Ellipsoid.WGS84 optional The ellipsoid on which the rectangle is defined.
result OrientedBoundingBox optional The object onto which to store the result.
Returns:
The modified result parameter or a new OrientedBoundingBox instance if none was provided.
Throws:

static Cesium.OrientedBoundingBox.fromTransformation(transformation, result)OrientedBoundingBox

Computes an OrientedBoundingBox that bounds an affine transformation.
Name Type Description
transformation Matrix4 The affine transformation.
result OrientedBoundingBox optional The object onto which to store the result.
Returns:
The modified result parameter or a new OrientedBoundingBox instance if none was provided.

static Cesium.OrientedBoundingBox.intersectPlane(box, plane)Intersect

Determines which side of a plane the oriented bounding box is located.
Name Type Description
box OrientedBoundingBox The oriented bounding box to test.
plane Plane The plane to test against.
Returns:
Intersect.INSIDE if the entire box is on the side of the plane the normal is pointing, Intersect.OUTSIDE if the entire box is on the opposite side, and Intersect.INTERSECTING if the box intersects the plane.

static Cesium.OrientedBoundingBox.isOccluded(box, occluder)Boolean

Determines whether or not a bounding box is hidden from view by the occluder.
Name Type Description
box OrientedBoundingBox The bounding box surrounding the occludee object.
occluder Occluder The occluder.
Returns:
true if the box is not visible; otherwise false.

static Cesium.OrientedBoundingBox.pack(value, array, startingIndex)Array.<Number>

Stores the provided instance into the provided array.
Name Type Default Description
value OrientedBoundingBox The value to pack.
array Array.<Number> The array to pack into.
startingIndex Number 0 optional The index into the array at which to start packing the elements.
Returns:
The array that was packed into

static Cesium.OrientedBoundingBox.unpack(array, startingIndex, result)OrientedBoundingBox

Retrieves an instance from a packed array.
Name Type Default Description
array Array.<Number> The packed array.
startingIndex Number 0 optional The starting index of the element to be unpacked.
result OrientedBoundingBox optional The object into which to store the result.
Returns:
The modified result parameter or a new OrientedBoundingBox instance if one was not provided.
Duplicates this OrientedBoundingBox instance.
Name Type Description
result OrientedBoundingBox optional The object onto which to store the result.
Returns:
The modified result parameter or a new OrientedBoundingBox instance if one was not provided.

computeCorners(result)Array.<Cartesian3>

Computes the eight corners of an oriented bounding box. The corners are ordered by (-X, -Y, -Z), (-X, -Y, +Z), (-X, +Y, -Z), (-X, +Y, +Z), (+X, -Y, -Z), (+X, -Y, +Z), (+X, +Y, -Z), (+X, +Y, +Z).
Name Type Description
result Array.<Cartesian3> optional An array of eight Cartesian3 instances onto which to store the corners.
Returns:
The modified result parameter or a new array if none was provided.

computePlaneDistances(position, direction, result)Interval

The distances calculated by the vector from the center of the bounding box to position projected onto direction.
If you imagine the infinite number of planes with normal direction, this computes the smallest distance to the closest and farthest planes from position that intersect the bounding box.
Name Type Description
position Cartesian3 The position to calculate the distance from.
direction Cartesian3 The direction from position.
result Interval optional A Interval to store the nearest and farthest distances.
Returns:
The nearest and farthest distances on the bounding box from position in direction.

computeTransformation(result)Matrix4

Computes a transformation matrix from an oriented bounding box.
Name Type Description
result Matrix4 The object onto which to store the result.
Returns:
The modified result parameter or a new Matrix4 instance if none was provided.

distanceSquaredTo(cartesian)Number

Computes the estimated distance squared from the closest point on a bounding box to a point.
Name Type Description
cartesian Cartesian3 The point
Returns:
The estimated distance squared from the bounding sphere to the point.
Example:
// Sort bounding boxes from back to front
boxes.sort(function(a, b) {
    return b.distanceSquaredTo(camera.positionWC) - a.distanceSquaredTo(camera.positionWC);
});

equals(right)Boolean

Compares this OrientedBoundingBox against the provided OrientedBoundingBox componentwise and returns true if they are equal, false otherwise.
Name Type Description
right OrientedBoundingBox optional The right hand side OrientedBoundingBox.
Returns:
true if they are equal, false otherwise.

intersectPlane(plane)Intersect

Determines which side of a plane the oriented bounding box is located.
Name Type Description
plane Plane The plane to test against.
Returns:
Intersect.INSIDE if the entire box is on the side of the plane the normal is pointing, Intersect.OUTSIDE if the entire box is on the opposite side, and Intersect.INTERSECTING if the box intersects the plane.

isOccluded(occluder)Boolean

Determines whether or not a bounding box is hidden from view by the occluder.
Name Type Description
occluder Occluder The occluder.
Returns:
true if the sphere is not visible; otherwise false.