Cesium-记录差值线

/*** @param {Object} startTime  Date格式的开始时间* @param {Object} endTime Date格式的结束时间* @param {Object} coordinates  [x1,y1,x2,y2,x3,y3.......]* @param {Object} entityCollection  实体收集器*/
async function interpolationLine(startTime,endTime,coordinates,entityCollection){try{var start = Cesium.JulianDate.fromDate(startTime);var stop = Cesium.JulianDate.fromDate(endTime);// 计算每个坐标点的时间间隔var timeIntervals = []; //按每分钟进行插值var totalDuration = Cesium.JulianDate.secondsDifference(stop, start)/60; //生成插值点var positions = await lerpPostions(coordinates,Math.ceil(totalDuration));var intervalDuration = totalDuration / (positions.length - 1);  var currentTime = start;  for (var i = 0; i < positions.length; i++) {  var nextTime = Cesium.JulianDate.addDays(currentTime, intervalDuration, new Cesium.JulianDate());  timeIntervals.push(new Cesium.TimeInterval({  start: currentTime,  stop: nextTime,  isStartIncluded: true,  isStopIncluded: i === positions.length - 2 // 最后一个间隔包括结束时间  }));  currentTime = nextTime;  }  let lineps = [];const postionsLength = positions.length;entityCollection.entities.add({  polyline: {  clampToGround: true,positions: new Cesium.CallbackProperty((time)=>{var halfHour = Cesium.JulianDate.secondsDifference(time, start)/60;var dateRate = (halfHour/totalDuration);return positions.slice(0, postionsLength*dateRate);}, false),  width: 20,  material: new Cesium.PolylineGlowMaterialProperty({glowPower: 0.1,color: Cesium.Color.YELLOW}), }  });}catch(error){console.log("interpolationLine occur Error:",error);}}/**
* 生成均匀随机点坐标
* @param {Array} positions [x1,y1,x2,y2,x3,y3.......]
* @param {Number} number 需要进行插值的数量
* @param {Number} number 生成的随机点数
* @returns 返回生成的随机点坐标集合
*/
async function lerpPostions(positions,number,flag=true){var timeNumber = [];//占总时间的比例集合var lineDiatance = 0;//线的总长度var tempDis = [];//距离	const pointPosition = [];const points = [];try{if (positions.length <= 3) return;if(!flag){return positions;}//计算线段总长度for (var i = 0; i < positions.length - 2; i+=2) {let startPoint = new Cesium.Cartesian3.fromDegrees(positions[i],positions[i+1]);let currentDistance = Cesium.Cartesian3.distance(startPoint,new Cesium.Cartesian3.fromDegrees(positions[i+2],positions[i+3]));lineDiatance += currentDistance;tempDis.push(lineDiatance);points.push(startPoint);}//最后一截线段var lastPoint = new Cesium.Cartesian3.fromDegrees(positions[positions.length - 2],positions[positions.length - 1]);let lastDistance = Cesium.Cartesian3.distance(points[points.length - 1],lastPoint);lineDiatance += lastDistance;tempDis.push(lineDiatance);points.push(lastPoint);//设置每一个到达坐标对应的时间节点for (let i = 0; i < points.length; i++) {var everyTime = tempDis[i] / lineDiatance;timeNumber.push(everyTime);}//使用线性插值(线性插值的性能最高,但也最不圆滑)var spline = new Cesium.LinearSpline({times: timeNumber,points: points});for (let i = 1; i <= number; i++) {var cartesian3 = spline.evaluate(i / number);pointPosition.push(cartesian3);// 绘制插值点//  var interPoint = viewer.entities.add({// position: cartesian3,// point: {//   color: Cesium.Color.YELLOW,//   pixelSize: 6,//   disableDepthTestDistance: Number.POSITIVE_INFINITY// }//  });}return pointPosition}catch(error){console.log("lerpPostions occur error:",error);}return positions;
}

调用代码如下

        //设定了模拟时间的边界var startTime = new Date("2022-08-21 11:12:13");var endTime = new Date("2022-08-23 05:11:13");var start = Cesium.JulianDate.fromDate(startTime);var stop = Cesium.JulianDate.fromDate(endTime);//确保查看器处于预期的时间viewer.clock.startTime = start.clone();viewer.clock.stopTime = stop.clone();viewer.clock.currentTime = start.clone();viewer.clock.clockRange = Cesium.ClockRange.CLAMPED; //循环结束时//时间变化来控制速度viewer.clock.multiplier = 360;//给时间线设置边界viewer.timeline.zoomTo(start, stop);//建立一个统一管理实体的收集器let entityCollection = new Cesium.CustomDataSource("flowEntityCollection");viewer.dataSources.add(entityCollection);interpolationLine(startTime,endTime,coordinates,entityCollection);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git log查看项目中各成员的代码提交情况,行数,次数等

前言&#xff1a; 项目中通过git来提交代码后&#xff0c;可以通过git log的不同命令来查看项目中各成员的代码提交情况&#xff0c;行数&#xff0c;次数。 具体操作&#xff1a; 1、查看所有的提交日志,回车查看更多&#xff0c;不过太多会卡死&#xff0c;需要重新开 git …

神经网络(neural network)

在这一章中我们将进入深度学习算法&#xff0c;学习一些神经网络相关的知识&#xff0c;这些是有更加强大的作用&#xff0c;更加广泛的用途。 神经元和大脑(neurons and the brain): 我们对于我们的编程的进步主要来自我们对于大脑的研究&#xff0c;根据我们对于大脑的研究…

【中间件】docker的安装

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 .卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \doc…

【C++】string类的基础操作

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读 1. 基本概述 2. string类对象的常见构造 3. string类对象的容量操作 4. string类对象的访问及遍历操作 5. 迭代器 6.…

[CVE-2024-27198]TeamCity<2023.11.4 身份验证绕过漏洞

一、软件背景 TeamCity是一款由JetBrains公司开发的持续集成和持续部署工具。它提供了一个集成的平台&#xff0c;用于自动构建、测试和部署软件项目。TeamCity支持各种不同的编程语言和版本控制系统&#xff0c;包括但不限于Java、C#、Python、Git、SVN等。 二、影响版本 t…

javaWebssh教师荣誉库管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh在线授课辅导系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0…

【DP】蓝桥杯第十三届-费用报销

#include<iostream> #include<algorithm> #include<cstring> #include<set> #include<queue> using namespace std; const int N1010; int dp[N][5010];//dp[i][j]:选到第i个物品是否能取到价值j&#xff1b; int month[13]{0,31,28,31,30,31,30…

labuladong刷题笔记五(递归)

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的非…

代码随想录day15(2)栈与队列:滑动窗口最大值(leetcode239)

题目要求&#xff1a;给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。 思路&#xff1a;首先的想法就是暴力方法&#xff0c;遍历一遍…

网络口碑如何扭转舆论导向?

俗话说得好&#xff0c;好事不出门&#xff0c;坏事传千里&#xff0c;当企业的负面消息出现在网络上时&#xff0c;企业必须追责源头&#xff0c;从根源开展舆情管控&#xff0c;如果是恶语中伤&#xff0c;则可以付诸于法律。但是&#xff0c;如果是一些无关紧要的负面评价&a…

专访|云安全攻防:从理论到应用的全面探索

2023年11月&#xff0c;美国核研究实验室&#xff08;INL&#xff09;遭遇数据泄露。同年10月&#xff0c;索尼的员工数据在MOVEit攻击事件中被泄露。2024年2月&#xff0c;某知名制造商因云存储服务器的配置错误导致了敏感数据泄露。 这些事件表示企业必须重视云安全建设&…

第一套试卷大题

1.邻接矩阵和邻接表的写法&#xff1a; **介绍&#xff1a;**该图是一个无向图&#xff0c;所以邻接矩阵一定是对称的&#xff0c;而邻接表某节点的边数为无向图某节点的连接数 无向图的邻接矩阵&#xff1a; 无向图的邻接表&#xff08;不唯一&#xff09;&#xff1a; 根据无…

快速排序hoare优化

目录 三数取中法选key 优化点 基本思想 代码实现 小区间优化 优化点 基本思想 代码实现 由于hoare版快排在一些特殊情况下性能并不优&#xff0c;这里我们进行一些优化。 三数取中法选key 优化点 当数据有序时&#xff0c;快排就会很吃力&#xff0c;这是为什么呢…

[C语言]——分支和循环(1)

目录 一.if语句 1.if 2.else 3.分支中包含多条语句 4.嵌套if 5.悬空else问题 二.关系操作符 三.条件操作符 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构&#xff0c;C语⾔是能够实现这三种结构的&#xff0c;其实我们如果仔细分析&a…

洛谷P5908 猫猫和企鹅 做题反思(2024.3.7)

猫猫和企鹅 题目传送门 题目描述 王国里有 n n n 个居住区&#xff0c;它们之间有 n − 1 n-1 n−1 条道路相连&#xff0c;并且保证从每个居住区出发都可以到达任何一个居住区&#xff0c;并且每条道路的长度都为 1 1 1。 除 1 1 1 号居住区外&#xff0c;每个居住区住…

nginx配置普米监控

一.编译Nginx&#xff0c;增加vts模块 yum -y install gcc gcc-c make zlib-devel pcre pcre-devel openssl-devel perl-devel perl-ExtUtils-Embed gd-devel libxml2 libxml2-dev libxslt-devel yum -y install GeoIP GeoIP-devel GeoIP-data wget http://x.x.x.x/nginx-1.…

我的创作纪念日-1年

机缘 遇到一些问题&#xff0c;解决了很开心&#xff0c;顺手就写出来了 收获 8700粉丝20w浏览量800收藏 日常 创作已经成为生活的一部分了有精力有心得就写&#xff0c;没有就不写 憧憬 无需多说&#xff0c;继续写就是了 Tips 您发布的文章将会展示至 里程碑专区 &…

【深度学习笔记】优化算法——梯度下降

梯度下降 &#x1f3f7;sec_gd 尽管梯度下降&#xff08;gradient descent&#xff09;很少直接用于深度学习&#xff0c; 但了解它是理解下一节随机梯度下降算法的关键。 例如&#xff0c;由于学习率过大&#xff0c;优化问题可能会发散&#xff0c;这种现象早已在梯度下降中…

加载图形库和移动的升级

2023/3/7的草稿&#xff0c;怕数据丢失 #include<graphics.h> #include<iostream> #include<string> #include<vector>//使用这个为图片动态的分配内存 using namespace std;//减少透明度的,用于输出png文件 #pragma comment(lib, "MSIMG32.LIB&…

博客系统测试

文章目录 1.项目背景介绍2.功能介绍3.手动测试3.1编写测试用例3.2项目测试3.2.1登录测试3.2.2查看详情页面3.2.3编辑页面3.2.4删除博客3.2.5注销用户 大家好&#xff0c;我是晓星航。今天为大家带来的是 博客系统测试 相关的讲解&#xff01;&#x1f600; 1.项目背景介绍 项…