new PerspectiveFrustum()
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.
- Source:
- See:
Example
var frustum = new Cesium.PerspectiveFrustum();
frustum.aspectRatio = canvas.clientWidth / canvas.clientHeight;
frustum.fov = Cesium.Math.PI_OVER_THREE;
frustum.near = 1.0;
frustum.far = 2.0;
Members
aspectRatio :Number
The aspect ratio of the frustum's width to it's height.
Type:
- Number
- Default Value:
- undefined
- Source:
far :Number
The distance of the far plane.
Type:
- Number
- Default Value:
- 500000000.0
- Source:
fov :Number
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.
Type:
- Number
- Default Value:
- undefined
- Source:
(readonly) fovy :Number
Gets the angle of the vertical field of view, in radians.
Type:
- Number
- Default Value:
- undefined
- Source:
(readonly) infiniteProjectionMatrix :Matrix4
The perspective projection matrix computed from the view frustum with an infinite far plane.
Type:
near :Number
The distance of the near plane.
Type:
- Number
- Default Value:
- 1.0
- Source:
(readonly) projectionMatrix :Matrix4
Gets the perspective projection matrix computed from the view frustum.
Type:
xOffset :Number
Offsets the frustum in the x direction.
Type:
- Number
- Default Value:
- 0.0
- Source:
yOffset :Number
Offsets the frustum in the y direction.
Type:
- Number
- Default Value:
- 0.0
- Source:
Methods
clone(resultopt) → {PerspectiveFrustum}
Returns a duplicate of a PerspectiveFrustum instance.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
result |
PerspectiveFrustum |
<optional> |
The object onto which to store the result. |
- Source:
Returns:
The modified result parameter or a new PerspectiveFrustum instance if one was not provided.
- Type
- PerspectiveFrustum
computeCullingVolume(position, direction, up) → {CullingVolume}
Creates a culling volume for this frustum.
Parameters:
Name | Type | Description |
---|---|---|
position |
Cartesian3 | The eye position. |
direction |
Cartesian3 | The view direction. |
up |
Cartesian3 | The up direction. |
- Source:
Returns:
A culling volume at the given position and orientation.
- Type
- CullingVolume
Example
// Check if a bounding volume intersects the frustum.
var cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
var intersect = cullingVolume.computeVisibility(boundingVolume);
equals(otheropt) → {Boolean}
Compares the provided PerspectiveFrustum componentwise and returns
true
if they are equal, false
otherwise.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
other |
PerspectiveFrustum |
<optional> |
The right hand side PerspectiveFrustum. |
- Source:
Returns:
true
if they are equal, false
otherwise.
- Type
- Boolean
getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) → {Cartesian2}
Returns the pixel's width and height in meters.
Parameters:
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. |
result |
Cartesian2 | The object onto which to store the result. |
- Source:
Throws:
-
-
drawingBufferWidth must be greater than zero.
- Type
- DeveloperError
-
-
-
drawingBufferHeight must be greater than zero.
- Type
- DeveloperError
-
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.
- Type
- Cartesian2
Examples
// Example 1
// Get the width and height of a pixel.
var pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, 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.
var position = camera.position;
var direction = camera.direction;
var toCenter = Cesium.Cartesian3.subtract(primitive.boundingVolume.center, position, new Cesium.Cartesian3()); // vector from camera to a primitive
var toCenterProj = Cesium.Cartesian3.multiplyByScalar(direction, Cesium.Cartesian3.dot(direction, toCenter), new Cesium.Cartesian3()); // project vector onto camera direction vector
var distance = Cesium.Cartesian3.magnitude(toCenterProj);
var pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, new Cesium.Cartesian2());