当前位置: 首页 > news >正文

Cesium中granularity关键字引起的连锁知识

granularity 翻译成中文是颗粒度,在Cesium中用到这个单词的相关类包括Circle、Corridor、Ellipse、GroundPolyline、Polygon、Rectangle、Wall、CZML。第一眼,你肯定觉得是跟几何精度相关的,其实就是跟几何精度相关的。

1、CircleGeometry

总所周之,圆是由正凸多边形圆拟合的。圆的精度用于圆所划分的次数。默认值是0.02。这个0.02可以为圆划分的边数为(1+Ceil(PI/2/0.02))*2~=160条边。因此,如果场景有非常多的圆,建议这个值还是取大一点。这个值最大可以到Math.PI/2。注意,这时候得到的边是8个,不是最少的3个。

2、ShadowVolume

不要以为这是一个乱入的章节。ShadowVolume的创建也跟granularity相关。总所周之,ShadowVolume是一个Volume,即是一个体,那么这个体多大呢?是由CircleGeometry中的granularity决定的。granularity越大,则ShadowVolume的最大高度越高。计算公式如下

const r = ellipsoid.maximumRadius;//6378137
const delta = r / Math.cos(granularity * 0.5) - r;
return 本身圆柱的最大高度+ delta;

因此,如果我们设granularity为Math.PI/2(最大值情况),则这个ShadowVolume会比原来的圆柱(或者圆)高30839米。而如果是默认的参数0.02,这个高度是318米。

3、CorridorGeometry

按理说,这个转弯墙也应该利用granularity来表示转角的圆滑度,默认值为Math.PI/180。但是Cesium却没有用,而是自己根据两面墙的夹角重新算了这个granularity。当前只能通过CorridorGeometryLibrary.computeRoundCorner这个函数,直接修改granularity来达到修改弯曲度。最小granularity为3。

4、GroundPolylineGeometry

它的granularity默认值是999。它是把线段进行切割长度的量。

这个值对贴地的线,只要不为0或者不超过这个线的长度,那么效果都是OK的,因为GroundPolylineGeometry会自己去根据地形采样,但是如果为0,那么就会出现下面的情况。

5、其他类型 

由于时间关系,其他类型的几何在granularity设计上也会有所不同。后续有机会慢慢补上。


http://www.mrgr.cn/news/67304.html

相关文章:

  • 封装一个请求的hook(react函数组件)
  • 你使用过哪些MySQL中复杂且使用不频繁的函数?
  • 深度学习-pytorch安装与基本使用
  • Vue全局事件总线
  • 第二章:C语言基础(四)
  • 计算机网络八股文个人总结
  • 【系统架构设计师】高分论文:论企业集成平合的技术与应用
  • C语言-详细讲解-洛谷P1075 [NOIP2012 普及组] 质因数分解
  • Cookie技术详解:互联网中的“记忆”使者
  • Jenkins应用详解(Detailed Explanation of Jenkins Application)
  • 使用Golang实现开发中常用的【实例设计模式】
  • 秒杀系统设计:原则、关键技术与注意事项
  • ROS2humble版本使用colcon构建包
  • 二叉树的遍历和线索二叉树
  • 高频面试题(含笔试高频算法整理)基本总结回顾33
  • LCL三相并网逆变器simulink仿真+说明文档
  • ctfshow(316)--XSS漏洞--反射性XSS
  • 每日一题之老式计算器
  • 无需手动部署的正式版comfyUI是否就此收费?开源等同免费?
  • 定时任务——xxl-job原理与实现
  • 系统思考—深层结构
  • 【客户服务】全员服务
  • 查看网路信息-ifconfig命令
  • 目前主流的人工智能学习框架有哪些?
  • Java项目实战II基于Spring Boot的药店管理系统的设计与实现(开发文档+数据库+源码)
  • set和map的使用