PerspectiveFrustum - Cesium Documentation

# PerspectiveFrustum

#### 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.

  ##### 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;

  ##### See:

  - PerspectiveOffCenterFrustum
  Source: Scene/PerspectiveFrustum.js, line 32

### Members

#### aspectRatio :Number

  The aspect ratio of the frustum's width to it's height.
  Default Value: `undefined`
  Source: Scene/PerspectiveFrustum.js, line 51

#### far :Number

  The distance of the far plane.
  Default Value: `500000000.0`
  Source: Scene/PerspectiveFrustum.js, line 67

#### 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.
  Default Value: `undefined`
  Source: Scene/PerspectiveFrustum.js, line 42

#### fovy :Number

  Gets the angle of the vertical field of view, in radians.
  Default Value: `undefined`
  Source: Scene/PerspectiveFrustum.js, line 146

#### infiniteProjectionMatrix :Matrix4

  The perspective projection matrix computed from the view frustum with an infinite far plane.

  ##### See:

  - PerspectiveFrustum#projectionMatrix
  Source: Scene/PerspectiveFrustum.js, line 133

#### near :Number

  The distance of the near plane.
  Default Value: `1.0`
  Source: Scene/PerspectiveFrustum.js, line 59

#### projectionMatrix :Matrix4

  Gets the perspective projection matrix computed from the view frustum.

  ##### See:

  - PerspectiveFrustum#infiniteProjectionMatrix
  Source: Scene/PerspectiveFrustum.js, line 119

### Methods

#### clone(result) → PerspectiveFrustum

  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.
  Source: Scene/PerspectiveFrustum.js, line 216

#### 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.
      var cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
      var intersect = cullingVolume.computeVisibility(boundingVolume);

  Source: Scene/PerspectiveFrustum.js, line 167

#### equals(other) → Boolean

  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.
  Source: Scene/PerspectiveFrustum.js, line 244

#### getPixelSize(drawingBufferDimensions, distance, result) → Cartesian2

  Returns the pixel's width and height in meters.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `drawingBufferDimensions` | Cartesian2 |  | A `Cartesian2` with width and height in the x and y properties, respectively.
  `distance` | Number | `near plane distance` | optional The distance to the near plane in meters.
  `result` | Cartesian2 |  | optional 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:

  - DeveloperError : drawingBufferDimensions.x must be greater than zero.
  - DeveloperError : drawingBufferDimensions.y must be greater than zero.

  ##### Examples:

      // Example 1
      // Get the width and height of a pixel.
      var pixelSize = camera.frustum.getPixelSize({
          width : canvas.clientWidth,
          height : canvas.clientHeight
      });

      // 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)); // project vector onto camera direction vector
      var distance = Cesium.Cartesian3.magnitude(toCenterProj);
      var pixelSize = camera.frustum.getPixelSize({
          width : canvas.clientWidth,
          height : canvas.clientHeight
      }, distance);

  Source: Scene/PerspectiveFrustum.js, line 205