# PerspectiveOffCenterFrustum

#### new Cesium.PerspectiveOffCenterFrustum()
Scene/PerspectiveOffCenterFrustum.js 45

  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.PerspectiveOffCenterFrustum();
      frustum.right = 1.0;
      frustum.left = -1.0;
      frustum.top = 1.0;
      frustum.bottom = -1.0;
      frustum.near = 1.0;
      frustum.far = 2.0;

  ##### See:

  - PerspectiveFrustum

### Members

#### bottom : Number
Scene/PerspectiveOffCenterFrustum.js 75

  Defines the bottom clipping plane.
  Default Value: `undefined`

#### far : Number
Scene/PerspectiveOffCenterFrustum.js 91

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

#### readonlyinfiniteProjectionMatrix : Matrix4
Scene/PerspectiveOffCenterFrustum.js 160

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

  ##### See:

  - PerspectiveOffCenterFrustum#projectionMatrix

#### left : Number
Scene/PerspectiveOffCenterFrustum.js 51

  Defines the left clipping plane.
  Default Value: `undefined`

#### near : Number
Scene/PerspectiveOffCenterFrustum.js 83

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

#### readonlyprojectionMatrix : Matrix4
Scene/PerspectiveOffCenterFrustum.js 145

  Gets the perspective projection matrix computed from the view frustum.

  ##### See:

  - PerspectiveOffCenterFrustum#infiniteProjectionMatrix

#### right : Number
Scene/PerspectiveOffCenterFrustum.js 59

  Defines the right clipping plane.
  Default Value: `undefined`

#### top : Number
Scene/PerspectiveOffCenterFrustum.js 67

  Defines the top clipping plane.
  Default Value: `undefined`

### Methods

#### clone(result) → PerspectiveOffCenterFrustum
Scene/PerspectiveOffCenterFrustum.js 376

  Returns a duplicate of a PerspectiveOffCenterFrustum instance.

  Name | Type | Description
  --- | --- | ---
  `result` | PerspectiveOffCenterFrustum | 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/PerspectiveOffCenterFrustum.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/PerspectiveOffCenterFrustum.js 406

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

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

  ##### Returns:

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

#### getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, result) → Cartesian2
Scene/PerspectiveOffCenterFrustum.js 338

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