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.
参数名称 | 类型 | 描述信息 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
object |
可选
An object with the following properties:
|
使用示例:
const frustum = new Cesium.PerspectiveFrustum({
fov : Cesium.Math.PI_OVER_THREE,
aspectRatio : canvas.clientWidth / canvas.clientHeight
near : 1.0,
far : 1000.0
});
参考:
成员(属性)
The number of elements used to pack the object into an array.
The aspect ratio of the frustum's width to it's height.
-
默认值:
undefined
The distance of the far plane.
-
默认值:
500000000.0
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.
-
默认值:
undefined
Gets the angle of the vertical field of view, in radians.
-
默认值:
undefined
readonly infiniteProjectionMatrix : Matrix4
The perspective projection matrix computed from the view frustum with an infinite far plane.
The distance of the near plane.
-
默认值:
1.0
readonly projectionMatrix : Matrix4
Gets the perspective projection matrix computed from the view frustum.
If necessary, the projection matrix will be recomputed.
- PerspectiveOffCenterFrustum#projectionMatrix.
- PerspectiveFrustum#infiniteProjectionMatrix
参考:
Offsets the frustum in the x direction.
-
默认值:
0.0
Offsets the frustum in the y direction.
-
默认值:
0.0
方法
Stores the provided instance into the provided array.
参数名称 | 类型 | 默认值 | 描述信息 |
---|---|---|---|
value |
PerspectiveFrustum | The value to pack. | |
array |
Array.<number> | The array to pack into. | |
startingIndex |
number |
0
|
可选 The index into the array at which to start packing the elements. |
返回值:
The array that was packed into
static Cesium.PerspectiveFrustum.unpack(array, startingIndex, result) → PerspectiveFrustum
Retrieves an instance from a packed array.
参数名称 | 类型 | 默认值 | 描述信息 |
---|---|---|---|
array |
Array.<number> | The packed array. | |
startingIndex |
number |
0
|
可选 The starting index of the element to be unpacked. |
result |
PerspectiveFrustum | 可选 The object into which to store the result. |
返回值:
The modified result parameter or a new PerspectiveFrustum instance if one was not provided.
clone(result) → PerspectiveFrustum
Returns a duplicate of a PerspectiveFrustum instance.
参数名称 | 类型 | 描述信息 |
---|---|---|
result |
PerspectiveFrustum | 可选 The object onto which to store the result. |
返回值:
The modified result parameter or a new PerspectiveFrustum instance if one was not provided.
computeCullingVolume(position, direction, up) → CullingVolume
Creates a culling volume for this frustum.
参数名称 | 类型 | 描述信息 |
---|---|---|
position |
Cartesian3 | The eye position. |
direction |
Cartesian3 | The view direction. |
up |
Cartesian3 | The up direction. |
返回值:
A culling volume at the given position and orientation.
使用示例:
// Check if a bounding volume intersects the frustum.
const cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
const intersect = cullingVolume.computeVisibility(boundingVolume);
Compares the provided PerspectiveFrustum componentwise and returns
true
if they are equal, false
otherwise.
参数名称 | 类型 | 描述信息 |
---|---|---|
other |
PerspectiveFrustum | 可选 The right hand side PerspectiveFrustum. |
返回值:
true
if they are equal, false
otherwise.
Compares the provided PerspectiveFrustum componentwise and returns
true
if they pass an absolute or relative tolerance test,
false
otherwise.
参数名称 | 类型 | 默认值 | 描述信息 |
---|---|---|---|
other |
PerspectiveFrustum | The right hand side PerspectiveFrustum. | |
relativeEpsilon |
number | The relative epsilon tolerance to use for equality testing. | |
absoluteEpsilon |
number |
relativeEpsilon
|
可选 The absolute epsilon tolerance to use for equality testing. |
返回值:
true
if this and other are within the provided epsilon, false
otherwise.
getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result) → 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. |
返回值:
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.
-
DeveloperError : pixelRatio must be greater than zero.
使用示例s:
// 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());
// 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());