麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

Cesium API - PerspectiveFrustum 中文文档

本文介绍下Cesium中 PerspectiveFrustum API的详细使用说明。

PerspectiveFrustum API 调用方法

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方向上的偏移量。
示例:
var frustum = new Cesium.PerspectiveFrustum({
    fov : Cesium.Math.PI_OVER_THREE,
    aspectRatio : canvas.clientWidth / canvas.clientHeight
    near : 1.0,
    far : 1000.0
});
参考:

成员变量

staticCesium.PerspectiveFrustum.packedLength : Number
用于将对象打包成数组的元素数。
aspectRatio : Number
视锥的宽高比。
Default Value: undefined
远平面的距离。
Default Value: 500000000.0
视场的角度(FOV),单位为弧度。 如果宽度大于高度,则使用此角度作为水平FOV,否则为垂直FOV。
Default Value: undefined
readonlyfovy : Number
获取垂直视场的角度,单位为弧度。
Default Value: undefined
readonlyinfiniteProjectionMatrix : Matrix4
获取从具有无限远平面的视锥计算出的透视图投影矩阵。
参考:
近平面的距离。
Default Value: 1.0
readonlyprojectionMatrix : Matrix4
获取从视锥体计算出的透视投影矩阵。
参考:
x方向上的偏移量。
Default Value: 0.0
y方向上的偏移量。
Default Value: 0.0

内置方法

staticCesium.PerspectiveFrustum.pack(value, array, startingIndex)Array.<Number>
将提供的实例存储到提供的数组中。
Name Type Default Description
value PerspectiveFrustum 要包装的值。
array Array.<Number> 要被包装到的数组。
startingIndex Number 0 optional 开始包装元素的数组索引。
返回值:
被包装到的数组。
staticCesium.PerspectiveFrustum.unpack(array, startingIndex, result)PerspectiveFrustum
从已包装的数组中检索实例。
Name Type Default Description
array Array.<Number> 包装的数组。
startingIndex Number 0 optional 要解包的元素的起始索引。
result PerspectiveFrustum optional 存储结果的对象。
返回值:
修改后的结果参数或新的PerspectiveFrustum实例(如果没有提供)。
返回一个PerspectiveFrustum实例的副本。
Name Type Description
result PerspectiveFrustum optional 存储结果的对象。
返回值:
已修改的结果参数,如果没有提供则创建新的PerspectiveFrustum实例。
computeCullingVolume(position, direction, up)CullingVolume
创建此截锥体的剔除体(culling volume)。
Name Type Description
position Cartesian3 眼睛的位置。
direction Cartesian3 视图方向。
up Cartesian3 向上的方向。
返回值:
在给定的位置和方向上的剔除体(culling volume)。
示例:
// 检查包围盒是否与截锥体相交。
var cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
var intersect = cullingVolume.computeVisibility(boundingVolume);
equals(other)Boolean
与提供的PerspectiveFrustum分量比较,如果它们相等,则返回true,否则返回false
Name Type Description
other PerspectiveFrustum optional 要进行比较的PerspectiveFrustum。
返回值:
如果它们相等,则为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公差。
返回值:
如果两个都在规定的epsilon范围内,则为true;否则false
getPixelDimensions(drawingBufferWidth, drawingBufferHeight, distance, pixelRatio, result)Cartesian2
返回像素的宽度和高度(以米为单位)。
Name Type Description
drawingBufferWidth Number 绘图缓冲区的宽度。
drawingBufferHeight Number 绘图缓冲区的高度。
distance Number 到近平面的距离(以米为单位)。
pixelRatio Number 从像素空间到坐标空间的比例因子(scaling factor)。
result Cartesian2 存储结果的对象。
返回值:
修改后的结果参数,或Cartesian2的新实例,其中x和y属性中分别为像素的宽度和高度。
异常情况:
示例:
// 例1,获取一个像素的宽度和高度。
var pixelSize = camera.frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, 1.0, scene.pixelRatio, new Cesium.Cartesian2());
// 例2,获取一个像素的宽度和高度,如果附近的平面被设置为'distance'。
// 例如,获取布告牌上图像的像素大小。
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.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, distance, scene.pixelRatio, new Cesium.Cartesian2());

其他API

Cesium中文API文档手册(v1.63.1版本)参考:《Cesium中文API文档手册(v1.63.1版本)

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)