PerspectiveFrustum

new Cesium.PerspectiveFrustum(options)

The viewing frustum is defined by 6 planes. Each plane is represented by a Cartesian4 object, where the x, y, and z components define the unit vector normal to the plane, and the w component is the distance of the plane from the origin/camera position.
Name Type Description
options object optional An object with the following properties:
Name Type Default Description
fov number optional The angle of the field of view (FOV), in radians.
aspectRatio number optional The aspect ratio of the frustum's width to it's height.
near number 1.0 optional The distance of the near plane.
far number 500000000.0 optional The distance of the far plane.
xOffset number 0.0 optional The offset in the x direction.
yOffset number 0.0 optional The offset in the y direction.
Example:
const frustum = new Cesium.PerspectiveFrustum({
    fov : Cesium.Math.PI_OVER_THREE,
    aspectRatio : canvas.clientWidth / canvas.clientHeight
    near : 1.0,
    far : 1000.0
});
See:

Members

static Cesium.PerspectiveFrustum.packedLength : number

The number of elements used to pack the object into an array.
The aspect ratio of the frustum's width to it's height.
Default Value: undefined
The distance of the far plane.
Default Value: 500000000.0
The angle of the field of view (FOV), in radians. This angle will be used as the horizontal FOV if the width is greater than the height, otherwise it will be the vertical FOV.
Default Value: undefined

readonly fovy : number|undefined

Gets the angle of the vertical field of view, in radians.
Default Value: undefined
The perspective projection matrix computed from the view frustum with an infinite far plane.
See:
The distance of the near plane.
Default Value: 1.0
Gets the perspective projection matrix computed from the view frustum. If necessary, the projection matrix will be recomputed.
See:
Offsets the frustum in the x direction.
Default Value: 0.0
Offsets the frustum in the y direction.
Default Value: 0.0

Methods

static Cesium.PerspectiveFrustum.pack(value, array, startingIndex)Array.<number>

Stores the provided instance into the provided array.
Name Type Default Description
value PerspectiveFrustum 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.PerspectiveFrustum.unpack(array, startingIndex, result)PerspectiveFrustum

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 PerspectiveFrustum optional The object into which to store the result.
Returns:
The modified result parameter or a new PerspectiveFrustum instance if one was not provided.
Returns a duplicate of a PerspectiveFrustum instance.
Name Type Description
result PerspectiveFrustum optional The object onto which to store the result.
Returns:
The modified result parameter or a new PerspectiveFrustum instance if one was not provided.

computeCullingVolume(position, direction, up)CullingVolume

Creates a culling volume for this frustum.
Name Type Description
position Cartesian3 The eye position.
direction Cartesian3 The view direction.
up Cartesian3 The up direction.
Returns:
A culling volume at the given position and orientation.
Example:
// Check if a bounding volume intersects the frustum.
const cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
const intersect = cullingVolume.computeVisibility(boundingVolume);
Compares the provided PerspectiveFrustum componentwise and returns true if they are equal, false otherwise.
Name Type Description
other PerspectiveFrustum optional The right hand side PerspectiveFrustum.
Returns:
true if they are equal, false otherwise.

equalsEpsilon(other, relativeEpsilon, absoluteEpsilon)boolean

Compares the provided PerspectiveFrustum componentwise and returns true if they pass an absolute or relative tolerance test, false otherwise.
Name Type Default Description
other PerspectiveFrustum The right hand side PerspectiveFrustum.
relativeEpsilon number The relative epsilon tolerance to use for equality testing.
absoluteEpsilon number relativeEpsilon optional The absolute epsilon tolerance to use for equality testing.
Returns:
true if this and other are within the provided epsilon, false otherwise.

getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result)Cartesian2

Returns the pixel's width and height in meters.
Name Type Description
drawingBufferWidth number The width of the drawing buffer.
drawingBufferHeight number The height of the drawing buffer.
distance number The distance to the near plane in meters.
pixelRatio number The scaling factor from pixel space to coordinate space.
result Cartesian2 The object onto which to store the result.
Returns:
The modified result parameter or a new instance of Cartesian2 with the pixel's width and height in the x and y properties, respectively.
Throws:
Examples:
// Example 1
// Get the width and height of a pixel.
const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, scene.pixelRatio, new Cesium.Cartesian2());
// Example 2
// Get the width and height of a pixel if the near plane was set to 'distance'.
// For example, get the size of a pixel of an image on a billboard.
const position = camera.position;
const direction = camera.direction;
const toCenter = Cesium.Cartesian3.subtract(primitive.boundingVolume.center, position, new Cesium.Cartesian3());      // vector from camera to a primitive
const toCenterProj = Cesium.Cartesian3.multiplyByScalar(direction, Cesium.Cartesian3.dot(direction, toCenter), new Cesium.Cartesian3()); // project vector onto camera direction vector
const distance = Cesium.Cartesian3.magnitude(toCenterProj);
const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, scene.pixelRatio, new Cesium.Cartesian2());
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.