cesium工具-测距和测面-原理和代码
测距分为:空间距离和贴地距离;
测面积分为:水平面积和贴地面积。
下面讲解这4个工具的相关思路和代码:
1、空间距离
思路:
Cesium.Cartesian3.distance()计算出两点之间的距离
一条线上的所有点,每2个点依次计算距离,汇总之后得到总长度。
代码:
-
let lengthAll = 0;
-
for (let i = 0; i < arrPosCartesian3.length - 1; i ) {
-
let cartesianFirst = arrPosCartesian3[i];
-
let cartesianSecond = arrPosCartesian3[i 1];
-
let lengthSegment = Cesium.Cartesian3.distance(
-
cartesianFirst,
-
cartesianSecond
-
);
-
lengthAll = lengthSegment;
-
}
-
return lengthAll;
2、贴地距离
思路:
1、Cesium.Cartesian3.lerp()根据点击的所有点,在中间插值出多个点
2、对于插值点,获取实际对应的高度点后,计算距离来作为贴地距离
代码:
-
let step = 1; //抽稀的时候用
-
for (let i = 0; i < arrCartoClamped.length - 2; i = step) {
-
let cartoStart = arrCartoClamped[i];
-
let cartoEnd = arrCartoClamped[i step];
-
-
cartoStart.height = globe.getHeight(cartoStart);
-
cartoEnd.height = globe.getHeight(cartoEnd);
-
let lengthOf2Point = CartographicUtil.getDistanceFrom2Cartographic(
-
cartoStart,
-
cartoEnd
-
);
-
lengthALl = lengthOf2Point;
-
}
3、水平面积
思路:
面也是一个点、一个点的单击出来的
如上图,依次点击1、2、3、4、5共五个点,形成了一个多边形
计算面积就是依次对所有三角形的面积求和
即:
三角形1、2、3
三角形1、3、4
三角形1、4、5
上述所有三角形的面积和就是多边形的面积。
三角形面积,可以使用叉积来求得
代码:
-
function getAreaFromArrayCartesians(arrCartesian3) {
-
let areaAll = 0;
-
let cartesianFirst = arrCartesian3[0];
-
for (let i = 1; i < arrCartesian3.length - 1; i ) {
-
let cartesianStart = arrCartesian3[i];
-
let cartesianEnd = arrCartesian3[i 1];
-
let vecStart = Cesium.Cartesian3.subtract(
-
cartesianStart,
-
cartesianFirst,
-
new Cesium.Cartesian3()
-
);
-
let vecEnd = Cesium.Cartesian3.subtract(
-
cartesianEnd,
-
cartesianFirst,
-
new Cesium.Cartesian3()
-
);
-
let vecCross = Cesium.Cartesian3.cross(
-
vecStart,
-
vecEnd,
-
new Cesium.Cartesian3()
-
);
-
let areaTriangle = Cesium.Cartesian3.magnitude(vecCross) * 0.5;
-
areaAll = areaTriangle;
-
}
-
return areaAll;
-
}
4、贴地面积
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgafhik
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01