PerspectiveFrustum

new Cesium.PerspectiveFrustum(options)

视锥体由 6 个平面定义。 每个平面由一个 Cartesian4 对象表示,其中 x、y 和 z 分量 定义了法向量的单位向量,w 分量是平面离原点/相机位置的距离。
Name Type Description
options object optional 具有以下属性的对象:
Name Type Default Description
fov number optional 视场角(FOV),以弧度表示。
aspectRatio number optional 视锥体宽度与高度的纵横比。
near number 1.0 optional 近平面的距离。
far number 500000000.0 optional 远平面的距离。
xOffset number 0.0 optional x 方向上的偏移量。
yOffset number 0.0 optional y 方向上的偏移量。
Example:
const frustum = new Cesium.PerspectiveFrustum({
    fov : Cesium.Math.PI_OVER_THREE,
    aspectRatio : canvas.clientWidth / canvas.clientHeight
    near : 1.0,
    far : 1000.0
});
See:

Members

static Cesium.PerspectiveFrustum.packedLength : number

用于将对象打包到数组中的元素数量。

aspectRatio : number|undefined

视锥体宽度与高度的纵横比。
Default Value: undefined
远平面的距离。
Default Value: 500000000.0
视场角(FOV),以弧度表示。该角度将用于 作为水平 FOV,如果宽度大于高度,则使用, 否则将为垂直 FOV。
Default Value: undefined

readonly fovy : number|undefined

获取垂直视场角,以弧度表示。
Default Value: undefined

readonly infiniteProjectionMatrix : Matrix4

从视锥体计算出的透视投影矩阵,具有无限远平面。
See:
近平面的距离。
Default Value: 1.0
获取从视锥体计算出的透视投影矩阵。 如果必要,投影矩阵将被重新计算。
See:
x 方向上的视锥体偏移量。
Default Value: 0.0
y 方向上的视锥体偏移量。
Default Value: 0.0

Methods

static Cesium.PerspectiveFrustum.pack(value, array, startingIndex)Array.<number>

将提供的实例存储到提供的数组中.
Name Type Default Description
value PerspectiveFrustum 要打包的值.
array Array.<number> 要打包到的数组.
startingIndex number 0 optional 开始打包元素的数组索引.
Returns:
被打包成的数组

static Cesium.PerspectiveFrustum.unpack(array, startingIndex, result)PerspectiveFrustum

从打包数组中检索实例.
Name Type Default Description
array Array.<number> 压缩数组.
startingIndex number 0 optional 需要解包的元素的起始索引.
result PerspectiveFrustum optional 存储结果的对象.
Returns:
修改后的结果参数或如果未提供,则返回一个新的 PerspectiveFrustum 实例.
返回一个 PerspectiveFrustum 实例的副本。
Name Type Description
result PerspectiveFrustum optional 存储结果的对象.
Returns:
修改后的结果参数或如果未提供,则返回一个新的 PerspectiveFrustum 实例。

computeCullingVolume(position, direction, up)CullingVolume

为此视锥体创建一个剔除体。
Name Type Description
position Cartesian3 眼睛的位置。
direction Cartesian3 视线方向。
up Cartesian3 上方向。
Returns:
在给定位置和方向的剔除体。
Example:
// Check if a bounding volume intersects the frustum.
const cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
const intersect = cullingVolume.computeVisibility(boundingVolume);
按组件比较提供的 PerspectiveFrustum,并返回 如果相等则为 true,否则为 false
Name Type Description
other PerspectiveFrustum optional 右侧的 PerspectiveFrustum。
Returns:
如果相等则为 true,否则为 false

equalsEpsilon(other, relativeEpsilon, absoluteEpsilon)boolean

按组件比较提供的 PerspectiveFrustum,并返回 如果通过绝对或相对公差测试,则为 true,否则为 false
Name Type Default Description
other PerspectiveFrustum 右侧的 PerspectiveFrustum。
relativeEpsilon number 用于相等性测试的相对 epsilon 容差。
absoluteEpsilon number relativeEpsilon optional 用于平等测试的绝对 epsilon 容差。
Returns:
true 如果 this 和 other 在提供的 epsilon 内,false 否则。

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

返回像素在米中的宽度和高度。
Name Type Description
drawingBufferWidth number 绘图缓冲区的宽度。
drawingBufferHeight number 绘图缓冲区的高度。
distance number 到近平面的距离(以米为单位)。
pixelRatio number 从像素空间到坐标空间的缩放因子。
result Cartesian2 存储结果的对象。
Returns:
修改后的结果参数或一个新的 Cartesian2 实例,其 x 和 y 属性分别为像素的宽度和高度。
Throws:
Examples:
// 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());
需要帮助?获得答案的最快方法是来自社区和团队 Cesium Forum.