cesium模拟飞行以及波束跟随

阅读: 评论:0

cesium模拟飞⾏以及波束跟随
今天将两个功能整合起来做⼀个效果:
//
$(function () {
//添加⼀个按钮 ,控制他
$("#alongWith").click(
function () {
if ($("#alongWith").val() == 0) {
// 起始时间
let start = Cesium.JulianDate.fromDate(new Date(2020, 9, 15));
// 结束时间
let stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
$("#alongWith").val(1);
//传⼊图层,开始,结束,模型
alongWithTheSecurity(viewer, start, stop, "../../../assets/gltfModel/Cesium_Air.glb");
} else {
$("#alongWith").val(0);
煤气化制氢//删除模型及移动波束
window.clearInterval(jumpLightFun);
for (let entity of entitys) {
}
/
/解除相机视⾓锁定
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
}
}
);
});
//跳波束⽅法定时任务
let jumpLightFun;
let entitys = [];  //任务伴随所有实体删除时使⽤
/**
* 任务伴随保障功能
* @param {图层对象} viewer
* @param {开始时间} start  // 起始时间  let start = Cesium.JulianDate.fromDate(new Date(2020, 9, 15));
* @param {结束时间} stop    // 结束时间  let stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate()); * @param {模型路径} modelUrl  ../../../assets/gltfModel/Cesium_Air.glb
*/
function alongWithTheSecurity (viewer, start, stop, modelUrl) {
//给任务伴随添加的配置
viewer.homeButton = false;
viewer.fullscreenButton = false;
viewer.sceneModePicker = false;
viewer.navigationInstructionsInitiallyVisible = false;
viewer.navigationHelpButton = false;
viewer.shouldAnimate = true;
let flyName = "AAAA";
// 设置始时钟始时间
viewer.clock.startTime = start.clone();
// 设置时钟当前时间
viewer.clock.currentTime = start.clone();
// 设置始终停⽌时间
viewer.clock.stopTime = stop.clone();
// 时间速率,数字越⼤时间过的越快
viewer.clock.multiplier = 5;
/
/ 时间轴
To(start, stop);
// 循环执⾏,即为2,到达终⽌时间,重新从起点时间开始  LOOP_STOP:循环执⾏  CLAMPED:执⾏1次  viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
for (let j = 0; j < dataFly.length; j++) {
let property = computeFlight(dataFly[j]);
//console.log(property)
// 添加模型
let palner = ities.add({
// 和时间轴关联
availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
start: start,
stop: stop
})
]),
selectionIndicator: true,
label: {
text: flyName,
font: '26px Sans-Serif',
fillColor: Cesium.Color.YELLOW,
outlineColor: Cesium.Color.YELLOW,
style: Cesium.LabelStyle.CENTER_LABEL,
// 垂直位置
verticalOrigin: Cesium.VerticalOrigin.TOP,
// 中⼼位置
pixelOffset: new Cesium.Cartesian2(0, -50),
},
position: property,
// 根据所提供的速度计算模型的朝向
orientation: new Cesium.VelocityOrientationProperty(property),
// 模型数据
model: {
uri: modelUrl ? modelUrl : '../../../assets/gltfModel/Cesium_Air.glb',
minimumPixelSize: 128,
}
});
entitys.push(palner);
//动态刷新模型位置,进⽽刷新相机位置
let cameraEntity = viewer.scene.preUpdate.addEventListener(function () {
//console.log("==============================================")
if (palner && $("#alongWith").val() == 1) {
// console.log("aaaaaaaaaaaa:" + new Date());
hpRange = viewer.camera;
//hpRange.heading = Radians(180);
// hpRange.pitch = Radians(45);
hpRange.range = 15000000;
var center = Value(viewer.clock.currentTime);
if (center) viewer.camera.lookAt(center, hpRange);
}
压电陶瓷超声换能器});
//波束跟随⼀直跟随模型移动
//beamWithLig(data.satelliteList[4], palner, 600000);
//⼀秒钟波束跳⼀次⽅法
for (let time of currentTime) {
var position = Value(time);
var cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(position);      var ecLat = Degrees(cartographic.latitude);
var ecLong = Degrees(cartographic.longitude);
var alt = cartographic.height;
let eneity;
if ((time.secondsOfDay - 14437) > 180) {
eneity = dataFly[0][4].satellite
} else {
eneity = dataFly[0][0].satellite
}
taskJumpLight(ecLong, ecLat, eneity, time.secondsOfDay - 14437);
}
//切换波束操作
jumpLightFun = window.setInterval(() => {
let time = (Number.parseInt(viewer.clock.currentTime.secondsOfDay) - 14437) + "";
if (time.length == 1) {
time = 0;
} else if (time.length == 2) {
time = Number(time.substr(0, 1) + "0")
} else if (time.length == 3) {
time = Number(time.substr(0, 2) + "0")
}
// time = Number.parseInt(time / 10) * 10 + 10;
//console.log("time:" + time)
if (time) {
for (let entity of entitys) {
if (entity._name === time) {
entity.show = true;
} else if (entity._name) {
entity.show = false;
}
}
}
}, 500);
}自锁器
function computeFlight (source) {
// 取样位置相当于⼀个集合
let property = new Cesium.SampledPositionProperty();
for (let i = 0; i < source.length; i++) {
let time = Cesium.JulianDate.addSeconds(start, source[i].time, new Cesium.JulianDate);
let position = Cesium.Cartesian3.fromDegrees(source[i].longitude, source[i].dimension, source[i].height);      // 添加位置,和时间对应
property.addSample(time, position);
}
return property;
}
}
/**
* @Des 波束跟随
* @param {卫星对象} sourEntity
* @param {移动模型} tarEntity
* @param {波速半径 (可选)} radius
*/
function beamWithLig (sourEntity, tarEntity, radiusaaa) {
var isConstant = false;
//var sourceColor = lor;电力网桥
var tcColor = Cesium.Color.fromAlpha(Cesium.Color.RED, parseFloat(0.5));
var colors = Cesium.Color.fromRandom({ alpha: 0.4 });
for (var k = 0; k < 36; k += 3) {
let beam = Cesium.when(k).then(function (k) {
let beamEntity = ities.add({
polygon: {
hierarchy: new Cesium.CallbackProperty(function (time, result) {
var time = viewer.clock.currentTime;
var position = Value(time);
if (!Cesium.defined(tarEntity)) {
return Cesium.Cartesian3.fromDegreesArrayHeights([]);
}
if (!Cesium.defined(position)) {
return Cesium.Cartesian3.fromDegreesArrayHeights([]);
}
//获取postion进⾏反向解析
var cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(position);
var ecLat = Degrees(cartographic.latitude);
var ecLong = Degrees(cartographic.longitude);
var alt = cartographic.height;
//如果是卫星是移动模型可使⽤
// var sourPos = Value(time, result);
// var cartographic1 = viewer.scene.globe.ellipsoid.cartesianToCartographic(sourPos);            //卫星固定模型卫星经纬度(⾃⾏修改)
var sourLon = sourEntity.longitude;
var sourLat = sourEntity.latitude;
rvpnvar souralt = sourEntity.satelliteHeight;
var r = 600000;//半径
var color = '#0000FF';
var finalArr = [];
//模拟光照效果的若⼲多边形
var points = [];
for (var i = 0; i < 360; i += 30) {
var coord = offsetToLongLat([
ecLong, ecLat

本文发布于:2023-05-16 11:50:46,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/101929.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   模型   波束   位置   任务   伴随   跟随
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图