orientation: { heading: Cesium.Math.toRadians(0.0), pitch: Cesium.Math.toRadians(-15.0), },
时间: 2025-03-14 11:09:22 浏览: 53
### Cesium 中 Orientation 对象的 Heading 和 Pitch 属性用法
在 Cesium 中,`orientation` 是一个对象,通常用于定义相机的方向。它包含了三个主要属性:`heading`、`pitch` 和 `roll`。这些属性分别对应不同的旋转角度。
#### 1. **Heading**
`heading` 表示绕 Y 轴(北方向)的旋转角度,即偏航角 (yaw),决定了相机水平方向上的朝向。它的值通常是弧度制的角度,范围为 `[0, 2π)`。当设置 `heading` 时,可以使用 `Cesium.Math.toRadians()` 函数将角度从度数转换为弧度[^3]。
例如,在以下代码中,`heading` 的值被设定为 `0` 弧度,这意味着相机正对着北方。
```javascript
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(117.13, 36.68, 10000000),
orientation: {
heading : Cesium.Math.toRadians(0), // 偏航角,指向北方
pitch : Cesium.Math.toRadians(-90), // 俯仰角
roll : Cesium.Math.toRadians(0) // 翻滚角
}
});
```
#### 2. **Pitch**
`pitch` 表示绕 X 轴的旋转角度,即俯仰角 (pitch),决定了相机垂直方向上的倾斜程度。其值同样是以弧度表示,范围一般为 `[-π/2, π/2]`。正值表示向上看,负值表示向下看。
在下面的例子中,`pitch` 被设为 `-90` 弧度,这使得相机完全向下看地面。
```javascript
viewer.camera.lookAt(
Cesium.Cartesian3.fromDegrees(118.0658439, 24.5915414), // 定义目标位置
new Cesium.HeadingPitchRange(
Cesium.Math.toRadians(0), // 偏航角
Cesium.Math.toRadians(-90), // 俯仰角,向下看
20000 // 相机距离目标的距离
)
);
```
#### 3. **Math.toRadians 示例**
由于 Cesium 使用的是弧度而不是度数来测量角度,因此经常需要用到 `Cesium.Math.toRadians()` 方法来进行单位转换。以下是几个常见的例子:
- 将 90 度转为弧度:
```javascript
let radians = Cesium.Math.toRadians(90); // 结果约为 1.5707963267948966
```
- 将 -45 度转为弧度:
```javascript
let radiansNegative = Cesium.Math.toRadians(-45); // 结果约为 -0.7853981633974483
```
#### 4. **完整示例**
以下是一个完整的示例,展示了如何利用 `setView` 方法并结合 `orientation` 来调整相机的位置和姿态:
```javascript
// 初始化 Viewer
let viewer = new Cesium.Viewer('cesiumContainer');
// 设置相机视图
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(117.13, 36.68, 10000000), // 地理坐标及高度
orientation: {
heading : Cesium.Math.toRadians(45), // 向东北方稍微偏移
pitch : Cesium.Math.toRadians(-30), // 下倾一定角度
roll : Cesium.Math.toRadians(0) // 不翻滚
}
});
```
此代码片段设置了相机的目标位置以及其方向,其中 `heading` 控制水平方向,而 `pitch` 则影响上下视角。
---
阅读全文