# BoundingSphere

#### new Cesium.BoundingSphere(center, radius)
engine/Source/Core/BoundingSphere.js 27

A bounding sphere with a center and a radius.

Name | Type | Default | Description
--- | --- | --- | ---
`center` | Cartesian3 | `Cartesian3.ZERO` | optional The center of the bounding sphere.
`radius` | number | `0.0` | optional The radius of the bounding sphere.

##### See:

- AxisAlignedBoundingBox
- BoundingRectangle
- Packable

### Members

#### static Cesium.BoundingSphere.packedLength : number
engine/Source/Core/BoundingSphere.js 941

The number of elements used to pack the object into an array.

#### center : Cartesian3
engine/Source/Core/BoundingSphere.js 33

The center point of the sphere.

Default Value: ``Cartesian3.ZERO``

#### radius : number
engine/Source/Core/BoundingSphere.js 40

The radius of the sphere.

Default Value: `0.0`

### Methods

#### static Cesium.BoundingSphere.clone(sphere, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 923

Duplicates a BoundingSphere instance.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The bounding sphere to duplicate.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided. (Returns undefined if sphere is undefined)

#### static Cesium.BoundingSphere.computePlaneDistances(sphere, position, direction, result) → Interval
engine/Source/Core/BoundingSphere.js 1227

The distances calculated by the vector from the center of the bounding sphere to position projected onto direction plus/minus the radius of the bounding sphere.
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 sphere.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The bounding sphere 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 sphere from position in direction.

#### static Cesium.BoundingSphere.distanceSquaredTo(sphere, cartesian) → number
engine/Source/Core/BoundingSphere.js 1158

Computes the estimated distance squared from the closest point on a bounding sphere to a point.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The sphere.
`cartesian` | Cartesian3 | The point

##### Returns:

The distance squared from the bounding sphere to the point. Returns 0 if the point is inside the sphere.

##### Example:

    // Sort bounding spheres from back to front
    spheres.sort(function(a, b) {
        return Cesium.BoundingSphere.distanceSquaredTo(b, camera.positionWC) - Cesium.BoundingSphere.distanceSquaredTo(a, camera.positionWC);
    });

#### static Cesium.BoundingSphere.equals(left, right) → boolean
engine/Source/Core/BoundingSphere.js 1402

Compares the provided BoundingSphere componentwise and returns `true` if they are equal, `false` otherwise.

Name | Type | Description
--- | --- | ---
`left` | BoundingSphere | optional The first BoundingSphere.
`right` | BoundingSphere | optional The second BoundingSphere.

##### Returns:

`true` if left and right are equal, `false` otherwise.

#### static Cesium.BoundingSphere.expand(sphere, point, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 1066

Computes a bounding sphere by enlarging the provided sphere to contain the provided point.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | A sphere to expand.
`point` | Cartesian3 | A point to enclose in a bounding sphere.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromBoundingSpheres(boundingSpheres, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 802

Computes a tight-fitting bounding sphere enclosing the provided array of bounding spheres.

Name | Type | Description
--- | --- | ---
`boundingSpheres` | Array.<BoundingSphere> | optional The array of bounding spheres.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromCornerPoints(corner, oppositeCorner, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 754

Computes a bounding sphere from the corner points of an axis-aligned bounding box. The sphere tightly and fully encompasses the box.

Name | Type | Description
--- | --- | ---
`corner` | Cartesian3 | optional The minimum height over the rectangle.
`oppositeCorner` | Cartesian3 | optional The maximum height over the rectangle.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

##### Example:

    // Create a bounding sphere around the unit cube
    const sphere = Cesium.BoundingSphere.fromCornerPoints(new Cesium.Cartesian3(-0.5, -0.5, -0.5), new Cesium.Cartesian3(0.5, 0.5, 0.5));

#### static Cesium.BoundingSphere.fromEllipsoid(ellipsoid, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 779

Creates a bounding sphere encompassing an ellipsoid.

Name | Type | Description
--- | --- | ---
`ellipsoid` | Ellipsoid | The ellipsoid around which to create a bounding sphere.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

##### Example:

    const boundingSphere = Cesium.BoundingSphere.fromEllipsoid(ellipsoid);

#### static Cesium.BoundingSphere.fromEncodedCartesianVertices(positionsHigh, positionsLow, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 567

Computes a tight-fitting bounding sphere enclosing a list of EncodedCartesian3s, where the points are stored in parallel flat arrays in X, Y, Z, order. The bounding sphere is computed by running two algorithms, a naive algorithm and Ritter's algorithm. The smaller of the two spheres is used to ensure a tight fit.

Name | Type | Description
--- | --- | ---
`positionsHigh` | Array.<number> | optional An array of high bits of the encoded cartesians that the bounding sphere will enclose. Each point is formed from three elements in the array in the order X, Y, Z.
`positionsLow` | Array.<number> | optional An array of low bits of the encoded cartesians that the bounding sphere will enclose. Each point is formed from three elements in the array in the order X, Y, Z.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if one was not provided.

##### See:

- Bounding Sphere computation article

#### static Cesium.BoundingSphere.fromOrientedBoundingBox(orientedBoundingBox, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 856

Computes a tight-fitting bounding sphere enclosing the provided oriented bounding box.

Name | Type | Description
--- | --- | ---
`orientedBoundingBox` | OrientedBoundingBox | The oriented bounding box.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromPoints(positions, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 68

Computes a tight-fitting bounding sphere enclosing a list of 3D Cartesian points. The bounding sphere is computed by running two algorithms, a naive algorithm and Ritter's algorithm. The smaller of the two spheres is used to ensure a tight fit.

Name | Type | Description
--- | --- | ---
`positions` | Array.<Cartesian3> | optional An array of points that the bounding sphere will enclose. Each point must have `x`, `y`, and `z` properties.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if one was not provided.

##### See:

- Bounding Sphere computation article

#### static Cesium.BoundingSphere.fromRectangle2D(rectangle, projection, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 240

Computes a bounding sphere from a rectangle projected in 2D.

Name | Type | Default | Description
--- | --- | --- | ---
`rectangle` | Rectangle |  | optional The rectangle around which to create a bounding sphere.
`projection` | object | `GeographicProjection` | optional The projection used to project the rectangle into 2D.
`result` | BoundingSphere |  | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromRectangle3D(rectangle, ellipsoid, surfaceHeight, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 319

Computes a bounding sphere from a rectangle in 3D. The bounding sphere is created using a subsample of points on the ellipsoid and contained in the rectangle. It may not be accurate for all rectangles on all types of ellipsoids.

Name | Type | Default | Description
--- | --- | --- | ---
`rectangle` | Rectangle |  | optional The valid rectangle used to create a bounding sphere.
`ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid used to determine positions of the rectangle.
`surfaceHeight` | number | `0.0` | optional The height above the surface of the ellipsoid.
`result` | BoundingSphere |  | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromRectangleWithHeights2D(rectangle, projection, minimumHeight, maximumHeight, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 261

Computes a bounding sphere from a rectangle projected in 2D. The bounding sphere accounts for the object's minimum and maximum heights over the rectangle.

Name | Type | Default | Description
--- | --- | --- | ---
`rectangle` | Rectangle |  | optional The rectangle around which to create a bounding sphere.
`projection` | object | `GeographicProjection` | optional The projection used to project the rectangle into 2D.
`minimumHeight` | number | `0.0` | optional The minimum height over the rectangle.
`maximumHeight` | number | `0.0` | optional The maximum height over the rectangle.
`result` | BoundingSphere |  | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromTransformation(transformation, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 892

Computes a tight-fitting bounding sphere enclosing the provided affine transformation.

Name | Type | Description
--- | --- | ---
`transformation` | Matrix4 | The affine transformation.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.fromVertices(positions, center, stride, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 379

Computes a tight-fitting bounding sphere enclosing a list of 3D points, where the points are stored in a flat array in X, Y, Z, order. The bounding sphere is computed by running two algorithms, a naive algorithm and Ritter's algorithm. The smaller of the two spheres is used to ensure a tight fit.

Name | Type | Default | Description
--- | --- | --- | ---
`positions` | Array.<number> |  | optional An array of points that the bounding sphere will enclose. Each point is formed from three elements in the array in the order X, Y, Z.
`center` | Cartesian3 | `Cartesian3.ZERO` | optional The position to which the positions are relative, which need not be the origin of the coordinate system. This is useful when the positions are to be used for relative-to-center (RTC) rendering.

`stride`

number

`3`

optional The number of array elements per vertex. It must be at least 3, but it may be higher. Regardless of the value of this parameter, the X coordinate of the first position is at array index 0, the Y coordinate is at array index 1, and the Z coordinate is at array index 2. When stride is 3, the X coordinate of the next position then begins at array index 3. If the stride is 5, however, two array elements are skipped and the next position begins at array index 5.

`result` | BoundingSphere |  | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if one was not provided.

##### Example:

    // Compute the bounding sphere from 3 positions, each specified relative to a center.
    // In addition to the X, Y, and Z coordinates, the points array contains two additional
    // elements per point which are ignored for the purpose of computing the bounding sphere.
    const center = new Cesium.Cartesian3(1.0, 2.0, 3.0);
    const points = [1.0, 2.0, 3.0, 0.1, 0.2,
                  4.0, 5.0, 6.0, 0.1, 0.2,
                  7.0, 8.0, 9.0, 0.1, 0.2];
    const sphere = Cesium.BoundingSphere.fromVertices(points, center, 5);

##### See:

- Bounding Sphere computation article

#### static Cesium.BoundingSphere.intersectPlane(sphere, plane) → Intersect
engine/Source/Core/BoundingSphere.js 1094

Determines which side of a plane a sphere is located.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The bounding sphere to test.
`plane` | Plane | The plane to test against.

##### Returns:

`Intersect.INSIDE` if the entire sphere is on the side of the plane the normal is pointing, `Intersect.OUTSIDE` if the entire sphere is on the opposite side, and `Intersect.INTERSECTING` if the sphere intersects the plane.

#### static Cesium.BoundingSphere.isOccluded(sphere, occluder) → boolean
engine/Source/Core/BoundingSphere.js 1386

Determines whether or not a sphere is hidden from view by the occluder.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The bounding sphere surrounding the occludee object.
`occluder` | Occluder | The occluder.

##### Returns:

`true` if the sphere is not visible; otherwise `false`.

#### static Cesium.BoundingSphere.pack(value, array, startingIndex) → Array.<number>
engine/Source/Core/BoundingSphere.js 952

Stores the provided instance into the provided array.

Name | Type | Default | Description
--- | --- | --- | ---
`value` | BoundingSphere |  | 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.BoundingSphere.projectTo2D(sphere, projection, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 1275

Creates a bounding sphere in 2D from a bounding sphere in 3D world coordinates.

Name | Type | Default | Description
--- | --- | --- | ---
`sphere` | BoundingSphere |  | The bounding sphere to transform to 2D.
`projection` | object | `GeographicProjection` | optional The projection to 2D.
`result` | BoundingSphere |  | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.transform(sphere, transform, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 1123

Applies a 4x4 affine transformation matrix to a bounding sphere.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The bounding sphere to apply the transformation to.
`transform` | Matrix4 | The transformation matrix to apply to the bounding sphere.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.transformWithoutScale(sphere, transform, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 1193

Applies a 4x4 affine transformation matrix to a bounding sphere where there is no scale The transformation matrix is not verified to have a uniform scale of 1. This method is faster than computing the general bounding sphere transform using `BoundingSphere.transform`.

Name | Type | Description
--- | --- | ---
`sphere` | BoundingSphere | The bounding sphere to apply the transformation to.
`transform` | Matrix4 | The transformation matrix to apply to the bounding sphere.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

##### Example:

    const modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(positionOnEllipsoid);
    const boundingSphere = new Cesium.BoundingSphere();
    const newBoundingSphere = Cesium.BoundingSphere.transformWithoutScale(boundingSphere, modelMatrix);

#### static Cesium.BoundingSphere.union(left, right, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 1006

Computes a bounding sphere that contains both the left and right bounding spheres.

Name | Type | Description
--- | --- | ---
`left` | BoundingSphere | A sphere to enclose in a bounding sphere.
`right` | BoundingSphere | A sphere to enclose in a bounding sphere.
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### static Cesium.BoundingSphere.unpack(array, startingIndex, result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 977

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` | BoundingSphere |  | optional The object into which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if one was not provided.

#### clone(result) → BoundingSphere
engine/Source/Core/BoundingSphere.js 1493

Duplicates this BoundingSphere instance.

Name | Type | Description
--- | --- | ---
`result` | BoundingSphere | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new BoundingSphere instance if none was provided.

#### computePlaneDistances(position, direction, result) → Interval
engine/Source/Core/BoundingSphere.js 1453

The distances calculated by the vector from the center of the bounding sphere to position projected onto direction plus/minus the radius of the bounding sphere.
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 sphere.

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 sphere from position in direction.

#### distanceSquaredTo(cartesian) → number
engine/Source/Core/BoundingSphere.js 1437

Computes the estimated distance squared from the closest point on a bounding sphere 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 spheres from back to front
    spheres.sort(function(a, b) {
        return b.distanceSquaredTo(camera.positionWC) - a.distanceSquaredTo(camera.positionWC);
    });

#### equals(right) → boolean
engine/Source/Core/BoundingSphere.js 1483

Compares this BoundingSphere against the provided BoundingSphere componentwise and returns `true` if they are equal, `false` otherwise.

Name | Type | Description
--- | --- | ---
`right` | BoundingSphere | optional The right hand side BoundingSphere.

##### Returns:

`true` if they are equal, `false` otherwise.

#### intersectPlane(plane) → Intersect
engine/Source/Core/BoundingSphere.js 1421

Determines which side of a plane the sphere is located.

Name | Type | Description
--- | --- | ---
`plane` | Plane | The plane to test against.

##### Returns:

`Intersect.INSIDE` if the entire sphere is on the side of the plane the normal is pointing, `Intersect.OUTSIDE` if the entire sphere is on the opposite side, and `Intersect.INTERSECTING` if the sphere intersects the plane.

#### isOccluded(occluder) → boolean
engine/Source/Core/BoundingSphere.js 1472

Determines whether or not a sphere is hidden from view by the occluder.

Name | Type | Description
--- | --- | ---
`occluder` | Occluder | The occluder.

##### Returns:

`true` if the sphere is not visible; otherwise `false`.

#### volume() → number
engine/Source/Core/BoundingSphere.js 1501

Computes the radius of the BoundingSphere.

##### Returns:

The radius of the BoundingSphere.

Need help? The fastest way to get answers is from the community and team on the Cesium Forum.