Skip to content

KBE3D / KBCore / Cesium / PerspectiveFrustum

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

示例

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

参数

An object with the following properties:

参数

The angle of the field of view (FOV), in radians.

参数

The aspect ratio of the frustum's width to it's height.

参数

The distance of the near plane.

参数

The distance of the far plane.

参数

The offset in the x direction.

参数

The offset in the y direction.

属性

packedLength

static packedLength: number

The number of elements used to pack the object into an array.


fov

fov: number | undefined

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.


aspectRatio

aspectRatio: number | undefined

The aspect ratio of the frustum's width to it's height.


near

near: number

The distance of the near plane.


far

far: number

The distance of the far plane.


xOffset

xOffset: number

Offsets the frustum in the x direction.


yOffset

yOffset: number

Offsets the frustum in the y direction.


projectionMatrix

readonly projectionMatrix: Matrix4

Gets the perspective projection matrix computed from the view frustum. If necessary, the projection matrix will be recomputed.


infiniteProjectionMatrix

readonly infiniteProjectionMatrix: Matrix4

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


fovy

readonly fovy: number | undefined

Gets the angle of the vertical field of view, in radians.

方法

pack()

static pack(value: PerspectiveFrustum, array: number[], startingIndex?: number): number[]

Stores the provided instance into the provided array.

参数

value

PerspectiveFrustum

The value to pack.

array

number[]

The array to pack into.

startingIndex?

number

The index into the array at which to start packing the elements.

返回

number[]

The array that was packed into


unpack()

static unpack(array: number[], startingIndex?: number, result?: PerspectiveFrustum): PerspectiveFrustum

Retrieves an instance from a packed array.

参数

array

number[]

The packed array.

startingIndex?

number

The starting index of the element to be unpacked.

result?

PerspectiveFrustum

The object into which to store the result.

返回

PerspectiveFrustum

The modified result parameter or a new PerspectiveFrustum instance if one was not provided.


computeCullingVolume()

computeCullingVolume(position: Cartesian3, direction: Cartesian3, up: Cartesian3): CullingVolume

Creates a culling volume for this frustum.

参数

position

Cartesian3

The eye position.

direction

Cartesian3

The view direction.

up

Cartesian3

The up direction.

返回

CullingVolume

A culling volume at the given position and orientation.

示例

ts
// Check if a bounding volume intersects the frustum.
const cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
const intersect = cullingVolume.computeVisibility(boundingVolume);

getPixelDimensions()

getPixelDimensions(drawingBufferWidth: number, drawingBufferHeight: number, distance: number, pixelRatio: number, result: Cartesian2): Cartesian2

Returns the pixel's width and height in meters.

参数

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.

pixelRatio

number

The scaling factor from pixel space to coordinate space.

result

Cartesian2

The object onto which to store the result.

返回

Cartesian2

The modified result parameter or a new instance of Cartesian2 with the pixel's width and height in the x and y properties, respectively.

Examples

ts
// Example 1
// Get the width and height of a pixel.
const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, scene.pixelRatio, new Cesium.Cartesian2());
ts
// 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.
const position = camera.position;
const direction = camera.direction;
const toCenter = Cesium.Cartesian3.subtract(primitive.boundingVolume.center, position, new Cesium.Cartesian3());      // vector from camera to a primitive
const toCenterProj = Cesium.Cartesian3.multiplyByScalar(direction, Cesium.Cartesian3.dot(direction, toCenter), new Cesium.Cartesian3()); // project vector onto camera direction vector
const distance = Cesium.Cartesian3.magnitude(toCenterProj);
const pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, scene.pixelRatio, new Cesium.Cartesian2());

clone()

clone(result?: PerspectiveFrustum): PerspectiveFrustum

Returns a duplicate of a PerspectiveFrustum instance.

参数

result?

PerspectiveFrustum

The object onto which to store the result.

返回

PerspectiveFrustum

The modified result parameter or a new PerspectiveFrustum instance if one was not provided.


equals()

equals(other?: PerspectiveFrustum): boolean

Compares the provided PerspectiveFrustum componentwise and returns <code>true</code> if they are equal, <code>false</code> otherwise.

参数

other?

PerspectiveFrustum

The right hand side PerspectiveFrustum.

返回

boolean

true if they are equal, false otherwise.


equalsEpsilon()

equalsEpsilon(other: PerspectiveFrustum, relativeEpsilon: number, absoluteEpsilon?: number): boolean

Compares the provided PerspectiveFrustum componentwise and returns <code>true</code> if they pass an absolute or relative tolerance test, <code>false</code> otherwise.

参数

other

PerspectiveFrustum

The right hand side PerspectiveFrustum.

relativeEpsilon

number

The relative epsilon tolerance to use for equality testing.

absoluteEpsilon?

number

The absolute epsilon tolerance to use for equality testing.

返回

boolean

true if this and other are within the provided epsilon, false otherwise.

构造函数

构造函数

new PerspectiveFrustum(options?: { fov?: number; aspectRatio?: number; near?: number; far?: number; xOffset?: number; yOffset?: number; }): PerspectiveFrustum

参数

options?
fov?

number

aspectRatio?

number

near?

number

far?

number

xOffset?

number

yOffset?

number

返回

PerspectiveFrustum

KBE3D @3.0.0 Copyright © 2024-present KBE3D