PerspectiveFrustum是一个透视投影的视锥体。它的构造函数如下:
new Cesium.PerspectiveFrustum()
在Cesium中,PerspectiveFrustum通常用于定义摄像机的视角和投影矩阵。
PerspectiveFrustum有如下属性:
定义视锥体垂直方向的视野角度,以角度为单位。
定义视锥体宽高比。
定义视锥体近处的裁剪平面距离。
定义视锥体远处的裁剪平面距离。
定义基础投影矩阵。
定义视锥体垂直方向的视野角度,以弧度为单位。
定义无限远投影矩阵(当far为无限大时)。
PerspectiveFrustum有如下方法:
返回一个新的PerspectiveFrustum实例,与当前实例完全相同。
返回指定距离处的视锥体大小,以像素为单位。
判断当前实例与指定实例是否相同。
将PerspectiveFrustum实例打包成一个数组。
将数组解包成一个PerspectiveFrustum实例。
设置一个正交投影矩阵。
设置一个透视投影矩阵。
用摄像机的位置、朝向和上方向定义视锥体。
将PerspectiveFrustum数组打包成一个数组。
将数组解包成PerspectiveFrustum数组。
// 创建一个PerspectiveFrustum实例
var frustum = new Cesium.PerspectiveFrustum();
// 设置透视投影
frustum.setPerspective(45, width / height, 0.01, 100000.0);
// 计算视锥体大小
var dimensions = frustum.getPixelDimensions(scene.drawingBufferWidth, scene.drawingBufferHeight, camera.positionCartographic.height);
// 创建摄像机实例
var camera = new Cesium.Camera(scene);
// 设置摄像机位置、朝向和上方向
camera.setView({
destination : Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222, 10000.0),
orientation : {
heading : Cesium.Math.toRadians(30.0),
pitch : Cesium.Math.toRadians(-15.0),
roll : 0.0
}
});
// 将摄像机设置为视锥体参考系
camera.frustum = frustum;
在上述示例中,我们通过创建一个PerspectiveFrustum实例来定义摄像机的视锥体。在设置完透视投影矩阵之后,我们使用getPixelDimensions方法计算出在当前摄像机距离下的视锥体大小。最后,将摄像机的位置、朝向和上方向设置为视锥体参考系。