vue-cesium
Version:
Vue 3.x components for CesiumJS.
82 lines (79 loc) • 4.67 kB
JavaScript
import shaderSource from '../../../shared/shaders/RadarScan.mjs';
"use strict";
function useRadar($services) {
const webgl = (options) => {
var _a;
const { viewer } = $services;
const webgl2 = (_a = $services.viewer.scene.context) == null ? void 0 : _a.webgl2;
let shaderSourceText = shaderSource;
if (!webgl2) {
shaderSourceText = shaderSourceText.replace("in vec2 v_textureCoordinates;", "varying vec2 v_textureCoordinates;");
shaderSourceText = shaderSourceText.replace(/texture\(/g, "texture2D(");
shaderSourceText = shaderSourceText.replace(/out_FragColor/g, "gl_FragColor");
}
const cartographicCenter = Cesium.Cartographic.fromCartesian(options.position, viewer.scene.globe.ellipsoid);
const _Cartesian3Center = Cesium.Cartographic.toCartesian(cartographicCenter, viewer.scene.globe.ellipsoid);
const _Cartesian4Center = new Cesium.Cartesian4(_Cartesian3Center.x, _Cartesian3Center.y, _Cartesian3Center.z, 1);
const _CartographicCenter1 = new Cesium.Cartographic(cartographicCenter.longitude, cartographicCenter.latitude, cartographicCenter.height + 500);
const _Cartesian3Center1 = Cesium.Cartographic.toCartesian(_CartographicCenter1, viewer.scene.globe.ellipsoid);
const _Cartesian4Center1 = new Cesium.Cartesian4(_Cartesian3Center1.x, _Cartesian3Center1.y, _Cartesian3Center1.z, 1);
const _CartographicCenter2 = new Cesium.Cartographic(
cartographicCenter.longitude + Cesium.Math.toRadians(1e-3),
cartographicCenter.latitude,
cartographicCenter.height
);
const _Cartesian3Center2 = Cesium.Cartographic.toCartesian(_CartographicCenter2, viewer.scene.globe.ellipsoid);
const _Cartesian4Center2 = new Cesium.Cartesian4(_Cartesian3Center2.x, _Cartesian3Center2.y, _Cartesian3Center2.z, 1);
const _RotateQ = new Cesium.Quaternion();
const _RotateM = new Cesium.Matrix3();
const _time = (/* @__PURE__ */ new Date()).getTime();
const _scratchCartesian4Center = new Cesium.Cartesian4();
const _scratchCartesian4Center1 = new Cesium.Cartesian4();
const _scratchCartesian4Center2 = new Cesium.Cartesian4();
const _scratchCartesian3Normal = new Cesium.Cartesian3();
const _scratchCartesian3Normal1 = new Cesium.Cartesian3();
const uniforms = {
u_scanCenterEC: function() {
return Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center);
},
u_scanPlaneNormalEC: function() {
const temp = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center);
const temp1 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center1, _scratchCartesian4Center1);
_scratchCartesian3Normal.x = temp1.x - temp.x;
_scratchCartesian3Normal.y = temp1.y - temp.y;
_scratchCartesian3Normal.z = temp1.z - temp.z;
Cesium.Cartesian3.normalize(_scratchCartesian3Normal, _scratchCartesian3Normal);
return _scratchCartesian3Normal;
},
u_radius: options.radius,
u_scanLineNormalEC: function() {
const temp = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center, _scratchCartesian4Center);
const temp1 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center1, _scratchCartesian4Center1);
const temp2 = Cesium.Matrix4.multiplyByVector(viewer.camera.viewMatrix, _Cartesian4Center2, _scratchCartesian4Center2);
_scratchCartesian3Normal.x = temp1.x - temp.x;
_scratchCartesian3Normal.y = temp1.y - temp.y;
_scratchCartesian3Normal.z = temp1.z - temp.z;
Cesium.Cartesian3.normalize(_scratchCartesian3Normal, _scratchCartesian3Normal);
_scratchCartesian3Normal1.x = temp2.x - temp.x;
_scratchCartesian3Normal1.y = temp2.y - temp.y;
_scratchCartesian3Normal1.z = temp2.z - temp.z;
const tempTime = ((/* @__PURE__ */ new Date()).getTime() - _time) % options.interval / options.interval;
Cesium.Quaternion.fromAxisAngle(_scratchCartesian3Normal, tempTime * Cesium.Math.PI * 2, _RotateQ);
Cesium.Matrix3.fromQuaternion(_RotateQ, _RotateM);
Cesium.Matrix3.multiplyByVector(_RotateM, _scratchCartesian3Normal1, _scratchCartesian3Normal1);
Cesium.Cartesian3.normalize(_scratchCartesian3Normal1, _scratchCartesian3Normal1);
return _scratchCartesian3Normal1;
},
u_scanColor: options.color
};
return {
shaderSource: shaderSourceText,
uniforms
};
};
return {
webgl
};
}
export { useRadar as default };
//# sourceMappingURL=use-radar-scan.mjs.map