PerspectiveOffCenterFrustum - Cesium Documentation

# PerspectiveOffCenterFrustum

#### new PerspectiveOffCenterFrustum()

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

### Members

#### bottom :Number

  Defines the bottom clipping plane.
  Default Value: `undefined`
  Source: Scene/PerspectiveOffCenterFrustum.js, line 74

#### far :Number

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

#### infiniteProjectionMatrix :Matrix4

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

  ##### See:

  - PerspectiveOffCenterFrustum#projectionMatrix
  Source: Scene/PerspectiveOffCenterFrustum.js, line 157

#### left :Number

  Defines the left clipping plane.
  Default Value: `undefined`
  Source: Scene/PerspectiveOffCenterFrustum.js, line 50

#### near :Number

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

#### projectionMatrix :Matrix4

  Gets the perspective projection matrix computed from the view frustum.

  ##### See:

  - PerspectiveOffCenterFrustum#infiniteProjectionMatrix
  Source: Scene/PerspectiveOffCenterFrustum.js, line 143

#### right :Number

  Defines the right clipping plane.
  Default Value: `undefined`
  Source: Scene/PerspectiveOffCenterFrustum.js, line 58

#### top :Number

  Defines the top clipping plane.
  Default Value: `undefined`
  Source: Scene/PerspectiveOffCenterFrustum.js, line 66

### Methods

#### clone(result) → PerspectiveOffCenterFrustum

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

#### 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/PerspectiveOffCenterFrustum.js, line 182

#### equals(other) → Boolean

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

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

  Source: Scene/PerspectiveOffCenterFrustum.js, line 334