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.
var center = new Cesium.Cartesian3(1.0, 0.0, 0.0);
var halfAxes = Cesium.Matrix3.fromScale(new Cesium.Cartesian3(1.0, 3.0, 2.0), new Cesium.Matrix3());
var obb = new Cesium.OrientedBoundingBox(center, halfAxes);
See:
Members
-
The number of elements used to pack the object into an array.
-
center : Cartesian3
-
The center of the box.
-
Default Value:
Cartesian3.ZERO
-
halfAxes : Matrix3
-
The transformation matrix, to rotate the box to the right position.
-
Default Value:
Matrix3.ZERO
Methods
-
staticCesium.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) -
staticCesium.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. -
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 estimated distance squared from the bounding sphere to the point.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); });
-
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. -
staticCesium.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. var box = Cesium.OrientedBoundingBox.fromPoints([new Cesium.Cartesian3(2, 0, 0), new Cesium.Cartesian3(-2, 0, 0)]);
-
staticCesium.OrientedBoundingBox.fromRectangle(rectangle, minimumHeight, maximumHeight, ellipsoid, result) → OrientedBoundingBox
-
Computes an OrientedBoundingBox that bounds a
Rectangle
on the surface of anEllipsoid
. 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:
-
DeveloperError : rectangle.width must be between 0 and pi.
-
DeveloperError : rectangle.height must be between 0 and pi.
-
DeveloperError : ellipsoid must be an ellipsoid of revolution (
radii.x == radii.y
)
-
-
staticCesium.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, andIntersect.INTERSECTING
if the box intersects the plane. -
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; otherwisefalse
. -
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 -
staticCesium.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. -
clone(result) → OrientedBoundingBox
-
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. -
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. -
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); });
-
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, andIntersect.INTERSECTING
if the box intersects the plane. -
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; otherwisefalse
.