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.…

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…

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

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

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

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…

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

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

博客系统测试

文章目录 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.项目背景介绍 项…

探讨倒排索引Elasticsearch面试与实战:从理论到实践

在当前大数据时代&#xff0c;Elasticsearch&#xff08;以下简称为ES&#xff09;作为一种强大的搜索和分析引擎&#xff0c;受到了越来越多企业的青睐。因此&#xff0c;对于工程师来说&#xff0c;掌握ES的面试准备和实战经验成为了必备技能之一。本文将从ES的面试准备和实际…

KL散度和交叉熵的应用介绍

深度学习 文章目录 深度学习前言KL散度和交叉熵KL散度与交叉熵的关系KL散度与交叉熵的应用总结 前言 KL散度&#xff08;Kullback-Leibler Divergence&#xff09;和交叉熵&#xff08;Cross Entropy&#xff09;是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之…

day14_异常

今日内容 零、 复习昨日 一、日期类 二、异常 零、 复习昨日 1为什么要重写toString Object类toString返回的是对象名字地址,无意义子类重写toString() 返回的对象属性内容 2为什么要重写equals Object类equals判断是对象的地址值是否相等,无意义子类重写equals,为了判断对象的…

神经网络算法——反向传播 Back Propagation

文章目录 前言 1、反向传播的本质 &#xff08;1&#xff09;前向传播&#xff08;Forward Propagation&#xff09; &#xff08;2&#xff09;反向传播&#xff08;Back Propagation&#xff09; 2、反向传播的原理 &#xff08;1&#xff09;链式法则&#xff08;Chain Rule…

GB 2312字符集:中文编码的基石

title: GB 2312字符集&#xff1a;中文编码的基石 date: 2024/3/7 19:26:00 updated: 2024/3/7 19:26:00 tags: GB2312编码中文字符集双字节编码区位码规则兼容性问题存储空间优化文档处理应用 一、GB 2312字符集的背景 GB 2312字符集是中国国家标准委员会于1980年发布的一种…

成都正信:亲戚借了钱一直不还怎么委婉的说

在中国传统文化中&#xff0c;亲情关系往往被视为最为重要和敏感的部分。当亲戚间发生借贷时&#xff0c;若出现拖欠不还的情形&#xff0c;处理起来尤为棘手。面对这样的尴尬局面&#xff0c;采取委婉而有效的沟通方式至关重要。 张华最近就遇到了这样的困扰。他的表弟去年因急…

【Python刷题】环形链表

问题描述 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…