PerspectiveOffCenterFrustum

new Cesium.PerspectiveOffCenterFrustum(options)

透视视锥由6个平面构成。 每个平面由一个Cartesian4对象表示,其中x、y和z分量定义了垂直于该平面的单位向量, w分量是该平面到原点/相机位置的距离。
Name Type Description
options Object optional 具有以下属性的对象:
Name Type Default Description
left Number optional 左侧裁剪平面距离。
right Number optional 右侧裁剪平面距离。
top Number optional 上方裁剪平面距离。
bottom Number optional 下方裁剪平面距离。
near Number 1.0 optional 接近裁剪平面的距离。
far Number 500000000.0 optional 远离裁剪平面的距离。
Example:
var frustum = new Cesium.PerspectiveOffCenterFrustum({
    left : -1.0,
    right : 1.0,
    top : 1.0,
    bottom : -1.0,
    near : 1.0,
    far : 100.0
});
See:

Members

定义下方裁剪平面。
Default Value: undefined
远离裁剪平面的距离。
Default Value: 500000000.0

readonlyinfiniteProjectionMatrix : Matrix4

获取从具有无限远平面的视锥计算出的透视图投影矩阵。
See:
定义左侧裁剪平面。
Default Value: undefined
接近裁剪平面的距离。
Default Value: 1.0
获取从视锥体计算出的透视投影矩阵。
See:
定义右侧裁剪平面。
Default Value: undefined
定义上方裁剪平面。
Default Value: undefined

Methods

返回一个PerspectiveOffCenterFrustum实例的副本。
Name Type Description
result PerspectiveOffCenterFrustum optional 存储结果的对象。
Returns:
已修改的结果参数,如果没有提供则创建新的PerspectiveOffCenterFrustum实例。

computeCullingVolume(position, direction, up)CullingVolume

创建此截锥体的剔除体(culling volume)。
Name Type Description
position Cartesian3 眼睛的位置。
direction Cartesian3 视图方向。
up Cartesian3 向上的方向。
Returns:
在给定的位置和方向上的剔除体(culling volume)。
Example:
// 检查包围盒是否与截锥体相交。
var cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
var intersect = cullingVolume.computeVisibility(boundingVolume);

equals(other)Boolean

与提供的PerspectiveOffCenterFrustum分量比较,如果它们相等,则返回true,否则返回false
Name Type Description
other PerspectiveOffCenterFrustum optional 要进行比较的PerspectiveOffCenterFrustum。
Returns:
如果它们相等,则为true,否则false

equalsEpsilon(other, relativeEpsilon, absoluteEpsilon)Boolean

与提供的PerspectiveOffCenterFrustum分量比较, 如果它们通过了绝对或相对公差测试,则返回true,否则返回false
Name Type Default Description
other PerspectiveOffCenterFrustum 要进行比较的PerspectiveOffCenterFrustum。
relativeEpsilon Number 用于等式检验的相对epsilon公差。
absoluteEpsilon Number relativeEpsilon optional 用于等式检验的绝对epsilon公差。
Returns:
如果两个都在规定的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 存储结果的对象。
Returns:
修改后的结果参数,或Cartesian2的新实例,其中x和y属性中分别为像素的宽度和高度。
Throws:
Examples:
// 例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());