对调右键环视两轴:左右=经度方向,上下=纬度方向
This commit is contained in:
@@ -396,7 +396,7 @@ export class CesiumGlobe {
|
|||||||
const sc = this._orbitScratch;
|
const sc = this._orbitScratch;
|
||||||
const offset = Cesium.Cartesian3.subtract(camera.position, pivot, sc.offset);
|
const offset = Cesium.Cartesian3.subtract(camera.position, pivot, sc.offset);
|
||||||
const upAxis = Cesium.Cartesian3.normalize(pivot, sc.upAxis);
|
const upAxis = Cesium.Cartesian3.normalize(pivot, sc.upAxis);
|
||||||
const eastAxis = Cesium.Cartesian3.cross(Cesium.Cartesian3.UNIT_Z, pivot, sc.eastAxis); // 绕它转 = 左右拖动(纬度方向倾倒)
|
const eastAxis = Cesium.Cartesian3.cross(Cesium.Cartesian3.UNIT_Z, pivot, sc.eastAxis); // 绕它转 = 上下拖动(纬度方向倾倒)
|
||||||
if (Cesium.Cartesian3.magnitudeSquared(eastAxis) < 1e-12) {
|
if (Cesium.Cartesian3.magnitudeSquared(eastAxis) < 1e-12) {
|
||||||
eastAxis.x = 1;
|
eastAxis.x = 1;
|
||||||
eastAxis.y = 0;
|
eastAxis.y = 0;
|
||||||
@@ -405,7 +405,7 @@ export class CesiumGlobe {
|
|||||||
Cesium.Cartesian3.normalize(eastAxis, eastAxis);
|
Cesium.Cartesian3.normalize(eastAxis, eastAxis);
|
||||||
}
|
}
|
||||||
const northAxis = Cesium.Cartesian3.normalize(
|
const northAxis = Cesium.Cartesian3.normalize(
|
||||||
Cesium.Cartesian3.cross(upAxis, eastAxis, sc.northAxis), // 绕它转 = 上下拖动(经度方向倾倒)
|
Cesium.Cartesian3.cross(upAxis, eastAxis, sc.northAxis), // 绕它转 = 左右拖动(经度方向倾倒)
|
||||||
sc.northAxis,
|
sc.northAxis,
|
||||||
);
|
);
|
||||||
this._lookState = {
|
this._lookState = {
|
||||||
@@ -448,13 +448,13 @@ export class CesiumGlobe {
|
|||||||
this._lookHandler = handler;
|
this._lookHandler = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 按累计角度(已限制)把相机绕点击点倾倒:左右 = 纬度方向(绕东西轴),
|
// 按累计角度(已限制)把相机绕点击点倾倒:左右 = 经度方向(绕南北轴),
|
||||||
// 上下 = 经度方向(绕南北轴);up 始终强制北朝上。
|
// 上下 = 纬度方向(绕东西轴);up 始终强制北朝上。
|
||||||
_orbitCamera(s) {
|
_orbitCamera(s) {
|
||||||
const camera = this.viewer.camera;
|
const camera = this.viewer.camera;
|
||||||
const sc = this._orbitScratch;
|
const sc = this._orbitScratch;
|
||||||
Cesium.Quaternion.fromAxisAngle(s.eastAxis, s.azimuth, sc.qAz);
|
Cesium.Quaternion.fromAxisAngle(s.northAxis, s.azimuth, sc.qAz);
|
||||||
Cesium.Quaternion.fromAxisAngle(s.northAxis, s.elevation, sc.qEl);
|
Cesium.Quaternion.fromAxisAngle(s.eastAxis, s.elevation, sc.qEl);
|
||||||
Cesium.Quaternion.multiply(sc.qEl, sc.qAz, sc.q);
|
Cesium.Quaternion.multiply(sc.qEl, sc.qAz, sc.q);
|
||||||
Cesium.Matrix3.fromQuaternion(sc.q, sc.rotMat);
|
Cesium.Matrix3.fromQuaternion(sc.q, sc.rotMat);
|
||||||
Cesium.Matrix3.multiplyByVector(sc.rotMat, s.startOffset, sc.newOffset);
|
Cesium.Matrix3.multiplyByVector(sc.rotMat, s.startOffset, sc.newOffset);
|
||||||
|
|||||||
Reference in New Issue
Block a user