function PerspectiveFrustum(options) {
  options = options ?? Frozen.EMPTY_OBJECT;

  this._offCenterFrustum = new PerspectiveOffCenterFrustum();

  /**
   * 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|undefined}
   * @default undefined
   */
  this.fov = options.fov;
  this._fov = undefined;
  this._fovy = undefined;

  this._sseDenominator = undefined;

  /**
   * The aspect ratio of the frustum's width to it's height.
   * @type {number|undefined}
   * @default undefined
   */
  this.aspectRatio = options.aspectRatio;
  this._aspectRatio = undefined;

  /**
   * The distance of the near plane.
   * @type {number}
   * @default 1.0
   */
  this.near = options.near ?? 1.0;
  this._near = this.near;

  /**
   * The distance of the far plane.
   * @type {number}
   * @default 500000000.0
   */
  this.far = options.far ?? 500000000.0;
  this._far = this.far;

  /**
   * Offsets the frustum in the x direction.
   * @type {number}
   * @default 0.0
   */
  this.xOffset = options.xOffset ?? 0.0;
  this._xOffset = this.xOffset;

  /**
   * Offsets the frustum in the y direction.
   * @type {number}
   * @default 0.0
   */
  this.yOffset = options.yOffset ?? 0.0;
  this._yOffset = this.yOffset;
}
The viewing frustum is defined by 6 planes.
Each plane is represented by a {@link 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.

@alias PerspectiveFrustum
@constructor

@param {object} [options] An object with the following properties:
@param {number} [options.fov] The angle of the field of view (FOV), in radians.
@param {number} [options.aspectRatio] The aspect ratio of the frustum's width to it's height.
@param {number} [options.near=1.0] The distance of the near plane.
@param {number} [options.far=500000000.0] The distance of the far plane.
@param {number} [options.xOffset=0.0] The offset in the x direction.
@param {number} [options.yOffset=0.0] The offset in the y direction.

@example
const frustum = new Cesium.PerspectiveFrustum({
    fov : Cesium.Math.PI_OVER_THREE,
    aspectRatio : canvas.clientWidth / canvas.clientHeight
    near : 1.0,
    far : 1000.0
});

@see PerspectiveOffCenterFrustum