# PerspectiveFrustum

#### new Cesium.PerspectiveFrustum()
Scene/PerspectiveFrustum.js 33

  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

### Members

#### aspectRatio : Number
Scene/PerspectiveFrustum.js 54

  The aspect ratio of the frustum's width to it's height.
  Default Value: `undefined`

#### far : Number
Scene/PerspectiveFrustum.js 70

  The distance of the far plane.
  Default Value: `500000000.0`

#### fov : Number
Scene/PerspectiveFrustum.js 43

  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`

#### readonlyfovy : Number
Scene/PerspectiveFrustum.js 153

  Gets the angle of the vertical field of view, in radians.
  Default Value: `undefined`

#### readonlyinfiniteProjectionMatrix : Matrix4
Scene/PerspectiveFrustum.js 139

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

  ##### See:

  - PerspectiveFrustum#projectionMatrix

#### near : Number
Scene/PerspectiveFrustum.js 62

  The distance of the near plane.
  Default Value: `1.0`

#### readonlyprojectionMatrix : Matrix4
Scene/PerspectiveFrustum.js 124

  Gets the perspective projection matrix computed from the view frustum.

  ##### See:

  - PerspectiveFrustum#infiniteProjectionMatrix

### Methods

#### clone(result) → PerspectiveFrustum
Scene/PerspectiveFrustum.js 229

  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
Scene/PerspectiveFrustum.js 185

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

#### equals(other) → Boolean
Scene/PerspectiveFrustum.js 257

  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.

#### getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) → Cartesian2
Scene/PerspectiveFrustum.js 218

  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.
  `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:

  - DeveloperError : drawingBufferWidth must be greater than zero.
  - DeveloperError : drawingBufferHeight must be greater than zero.

  ##### Examples:

      // Example 1
      // Get the width and height of a pixel.
      var pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, new 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 Cartesian2());