虚拟地球原理与实现

【Cesium创造属于你的地球】实现地球展示、灵活进行坐标转换、视角切换 大家好,我是AIC山鱼!👉这是我的🐋作为优快云博主和前端优质创作者✍,我致力于为大家带来新颖、脱俗且有趣的内容。🐱我还创建了,这是一个独特的社区🏠,🕺🏻为大家提供了一个交流和分享的空间。🌲在山鱼社区中,我推出了一个名为"松鼠计划"的活动,这是一个不断更新的活动,旨在将有趣、有启发性的书籍送给社区成员已经参加活动的人。我相信通过阅读和知识的分享,我们可以拓宽视野、激发思维,并获得更多的启示总之,我是AIC山鱼,一个充满新意、与众不同且有趣的优快云博主和前端优质创作者👈。 阅读详情

转载于:http://www.cpiso.cn/jsyj/ghxx/2011/6/15/120.shtml

一、引言

  目前与地理信息相关的信息绝大多数也是通过投影变换以平面的方式管理和使用,这已不能满足大范围甚至全球多分辨率海量数据管理的要求。

  2005年,美国谷歌公司推出了一款免费的虚拟地球浏览软件GoogleEarth(谷歌地球),给了人们一种全新的感受,数据动态装载、地形渐进描绘、多重细节层次(LOD: Levels of Detail)和虚拟现实表现等已成为虚拟地球的典型技术特征。

  因而构建一个虚拟地球,需要解决以下几个问题:全球角度空间数据模型的构造,海量地理空间数据(包括地形、影像)的组织、管理和调度,空间数据的三维可视化。

  

二、全球角度的空间数据模型

  投影理论解决了球面或椭球面不可展的难题(尽管不完美),从而建立了二维平面与实际球面三维空间的对应关系,球面网格理论则构建了全球空间数据高效访问的应用分析模型。

  

(一)、球面网格

  球面网格的基本原理是将球面(参考椭球面)递归剖分为面积、形状近似相等且具有多分辨率层次结构的网格单元,采用单元对应的地址编码代替地理坐标在球面上进行操作。

  全球网格主要分为经纬线网格和多面体网格。

  经纬度网格符合人们的思维习惯,计算简单直观且与现有各类数据转换比较方便,容易进行纹理坐标的计算和坐标转换(地理坐标到三维直角坐标),在添加地理数据时,所做的工作也最少。缺点是网格单元形状不均匀,接近极点的时候,网格扭曲,数据浪费严重。(图2-1)

  

  图2-1 经纬度网格

  多面体网格仅限于学术研究,鲜有工程化的实现。其最大优点就是每个网格单元扭曲很小,没有太大的数据浪费。这个特性非常有利于三维球面绘制。但缺点是在球面绘制时纹理映射比较复杂,另外在与地理坐标的转换上也是比较麻烦(图2-4)。

  

  图2-2 多面体网格

  

(二)、基于经纬度的球面网格

  基于经纬度的球面本身就隐含了一个矩形网格系统,为了改进在高纬度地区单元变形严重的缺陷,GeoFusion(2005)将全球划分为6个区域,其中4个处于南北纬45度之间,采用矩形网格,两个处于高纬度地区,采用三角形网格,避免了高纬度地区使用矩形网格带来的变形,但数学模型较复杂。

  目前主流的虚拟地球浏览器均采用基于经纬度的球面网格系统,其中GoogleEarth、NASA WorldWind采用统一的矩形网格(图2-3),ArcGlobe则采用GeoFusion的全球网格技术(图2-4)。

  

  图2-3 World Wind网格系统系统

  

  图2-4 GeoFusion网格系统

  

(三)、全球地形网格

  全球地形是虚拟地球的可视化基础。地形网格可以分为规则网格(Regular Surface Grid,RSG)和不规则三角网格(Triangulated Irregular Network,TIN)两类(图2-5)。

  

1.规则网格

  RSG是最简单、最直接的数据模型,只需将覆盖区域划分为规则排列的矩形单元,数据实际上就是规则间隔的网格点或经纬网点阵列,每个网格点与其他相邻网格点之间的拓扑关系都隐含在该阵列的行列号中。根据该区域的原点坐标、网格间距和行列号,经过简单运算即可求得任意网格点的地理坐标。

  由于RSG存储量小、结构简单、操作方便、因而非常适合大规模使用和管理。但是,RSG对复杂地形特征难以确定合适的网格大小,在地形简单地区容易产生大量冗余数据,而在地形比较复杂的地区,又不能准确表示地形的各种微小起伏。

  

2.不规则三角网格

  若将地形特征根据一定规则连接成覆盖整个区域且互不重叠的三角形则构成一个不规则三角网格。TIN较好地顾及了地貌特征,能逼真地表示复杂地形的起伏,同时还能克服地形起伏变化不大的地区产生的数据冗余问题。但由于数据量大、数据结构复杂且构网困难,TIN一般只适合表示小范围大比例尺高精度的地形。TIN不仅要存储每个网格点的高程,还要存储点之间的拓扑关系,因而数据量较大。

  

  图2-5 RSG和TIN

  

三、空间数据组织与管理

  三维空间数据是虚拟地球的基础。虚拟地球的数据主要包括地形数据、二维矢量数据和模型数据。

  

(一)、地形信息的管理

  地形数据又分为高程数据和影像数据,他们多采用分级组织、分块存储。

  

1.多分辨率金字塔

  所谓多分辨率金字塔就是用一系列网格表示统一地区的地形,相邻上下层次之间的网格的采样精度一般为1:4,因此在大范围地形显示时,采用较低精度的数据能大幅度缩短数据访问时间(图2-5a)。

  如果在每层网格上采用“分块策略”,则数据访问时间可进一步缩短,其基本思想就是将各层网格都细分为大小相等的矩形“瓦片”(Tile),这种数据结构也称为“瓦片金字塔”。其优点是一次读/写操作就能访问一个瓦片,并且经过甄别可以只访问所需的瓦片;缺点是数据冗余更多(图2-5b)。

  

  图3-1 多分辨率金字塔

  

2.瓦片四叉树

  多分辨率的TIN不具备简单的跨越式空间结构,在执行诸如视景体裁减、碰撞检测等操作时显得更为复杂,并且对TIN的压缩算法也比较复杂,不利于数据的快速访问。

  采用“分层分块”策略的瓦片金字塔不但大大缩短了数据访问时间而且能够表示多分辨率数据,是海量地形数据组织的理想结构,通过与树结构的结合,具备了快速数据索引的功能,从而形成了大范围空间数据组织方式——瓦片四叉树。采用四叉树描述的瓦拓扑关系简单,其索引只涉及加、减、加倍和减半操作,可以通过效率较高的位运算实现(图3-2)。

  

  图3-2 瓦片四叉树

  基于经纬的球面网格的瓦片的数据采用经纬度加高程描述,符合人们的习惯,也比较直观,而在显示时,则要转换为空间直角坐标系。

  目前流行的虚拟地球软件的数据组织方式,均采用瓦片四叉树结构。

  

(二)、模型数据的管理

  在实现模型数据的管理时一般有两种方式,一是集成式存储,这种方式多用于存储自动建模或精细建模所生成的模型文件;另一种是以三维空间数据模型实现的模型数据(二维矢量数据是三维模型数据的一个子集),多以数据库的方式管理,其中三维空间数据模型由包含点、线、面、体这四类空间对象的空间实体构成,其索引可以采用三维R树来实现 。

  

四、三维可视化

  在与地形、影像等栅格数据相关的各类应用中,大范围三维地形实时浏览对数据组织和呈现方式的要求较高,主要体现在两方面:海量数据处理和球面模型建立。

  

(一)、可视化关键技术

  在计算机交互式图形处理中,实时动画往往要求每秒25~30帧的图形刷新频率(至少每秒15~20帧),也就是说所有的建模、光照和绘制等处理任务必须在大约17微妙的时间内完成,对数据调度机制和图形绘制策略都提出了高的要求。

  为了在保证地形外观平滑的前提下尽量减少需要渲染的数据,有多种图形生成加速方法被提出,数据裁减、多细节层次技术(Level of Detail ,LOD)、异步数据加载、数据缓存、请求预测已经被广泛用于各种大规模地形场景的快速绘制算法中。

  

1.数据裁减

  数据裁减主要是视景体裁减(View Frustum Culling),视景体裁减的核心是计算视场的锥体裁减范围,即由视场角定义的上下左右四个面(类似照相机的视角)和由投影矩阵定义的远近剪切平面(类似照相机的景深),而后看三维实体(对于球面瓦片,可用其包容圆柱体)是否与视景体的相交或被视景体所包含(图4-1)。

  

  图4-1 视景体(View Frustum)

  

2.多细节层次技术

  LOD 技术是在不影响画面视觉效果的前提条件下,通过逐次简化景物的表面细节来减少场景的几何复杂性,从而提高绘制算法的效率,其所遵循的原则就是能够模拟“越远越模糊,越近越清楚”这一视觉现象,通常利用视角高度(Eyealt)与瓦片尺寸的比来判定是否当前显示的瓦片是否需要分解为更高分辨率的子瓦片(图4-2)。

  

  图4-2 瓦片层次

  

3.异步数据加载

  异步数据加载就是通过不同的线程加载瓦片数据,线程之间相互独立而又彼此关联,其工作原理是:主线程通过LOD算法与数据裁减计算出所需瓦片,如果瓦片不在数据缓存中,则将其添加到请求队列,当数据加载完毕,通知主线程瓦片可以使用,刷新视图。为了在数据加载时不影响显示的流畅性,主线程会先采用其上一级直至顶级的数据来绘制。异步数据加载还需剔除请求队列中因场景变换已不再需要加载的瓦片,避免资源的浪费。

  

4.数据缓存

  数据缓存有磁盘缓存和内存缓存,磁盘缓存用于将远程数据下载到本地硬盘,以提高数据加载速度,一般情况下磁盘缓存的大小是被限定的。

  内存缓存也叫高速缓存,是已经加载了的数据,可直接用于场景显示。高速缓存的大小设有上下限,用以控制缓存的瓦片数量不致太少也不要太多,缓存数据的置换算法可以用最近最少使用算法(Least Recent Use, LRU),LRU的主要出发点就是,如果某个瓦片被访问了,则它可能马上还会被访问。

  

5.请求预测

  数据缓存机制可以提高系统的性能,当地形场景连续运动时,如果应用程序能够提前预测系统即将需要的数据,并能提前把这些数据读到缓存区,那么当应用程序真正需要这些数据的时候,便可以直接从缓存区读取,从而省去了从数据源读取这些数据的时间。在海量地形漫游时,数据调度和场景绘制需要同时进行,因此,可以设立一个独立的线程来进行数据的预测调度。

  

(二)、地形的三维可视化

1.地形网格的构造

  地形数据多采用地理坐标(如经纬度)加高程信息的地形数据,这需要转换为对计算机而言表达简单,处理效率较高的空间直角坐标(图4-3)。

  

  图4-3 地形数据球面映射

  大地坐标系是统一的,能准确、唯一地描述地球上任一点的位置,并能动态适应历史的、现代的越来越精密的各种参考椭球体,是虚拟地球最为适当的坐标系(图4-4)。

  

  图4-4 地形数据投影模型

  三维地形模型的几何构造要素多为三角形(图4-5),即每个瓦片根据地形点阵数据,再构成三角形网格,这一过程是动态实时进行的,构造好的地形网格被存入地形高速缓存以备调用(图4-6)。

  

  图4-5 地形网格

  

  图4-6 ArcGlobe的GeoFusion地形网格

  

2.纹理映射

  纹理映射能够有效增强图像的真实感,在地形可视化中,卫星影像是最能提高地形真实性纹理。目前,几乎所有支持纹理映射的图形处理硬件都在其硬件系统中设置了纹理内存来缓存纹理数据以提高纹理映射的效率。纹理内存的容量有限,图形处理硬件可能无法缓存全部纹理数据,每次纹理映射时都需从主存中传输部分纹理数据,因此也需要设置纹理高速缓存中以备调用。

  

(三)、模型的三维可视化

  模型数据也可以用瓦片为单位建立高速缓存,来提高系统性能。

  在三维模型的展示上,点状对象(如树、路灯、管线点等)常采用三维模型符号来表示;线状对象(如管线)也是先建立三维线状符号(如圆柱体),获取线状对象的走向、长度、半径、高度方面的信息后,经过缩放、旋转、平移操作实现线状对象的绘制;面状对象绘制需建立模型并配以纹理贴图。

  

(四)、三维注记

  注记是虚拟地球中一个不可缺少的要素,有了注记,才能保证对地理信息的正确认识和方便地进行查询分析。汉字的显示与单字节文字的显示不一样,在OpenGL中是以轮廓文本的方式输出的。

  

五、测试程序设计与实现

(一)、三维平台简介

1.三维引擎

  三维引擎主要是OpenGL(OpenGraphicsLib)和Driect3D。

  OpenGL是Silicon Graphics公司(SGI)开发的一个工业标准,它灵活方便地实现了二维和三维的高级图形技术,具有建模,变换,光线处理,色彩处理,动画等。OpenGL独立于硬件设备,窗口系统和操作系统。

  Direct 3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API,主要为游戏开发而设计,是DirectX的一个组成部分。以COM接口形式提供的API,较为复杂,稳定性差,另外,目前只在Windows平台上可用。

  在游戏领域,DirectX的影响力已渐渐超越OpenGL并被大多数PC游戏开发商所采用,但在专业高端绘图中,OpenGL因为功能更丰富且图象质量更高,仍然主宰这一领域。

  

2.现有的虚拟地球产品

  基于OpenGL的虚拟地球产品主要有:NASA WorldWind Java版、OssimPlanet(以开源的Open Scene Graph为基础),ArcGlobe;基于Driect3D的虚拟地球产品主要有:NASA WorldWind C#版、Skyline。GoogleEarth则支持OpenGL、Driect3D两种三维引擎渲染方式。

  上述平台都支持二次开发,国内的一些虚拟地球产品大多以开源的平台为基础进行二次研发。

  

3.测试程序开发平台的选择

  作为一个测试程序,在三维平台上主要参考开源的NASA WorldWind Java版和基于OSG(Open Scene Graph)的OssimPlanet。

  NASA WorldWind Java版基于JOGL(Java OpenGL,Java对OpenGL API绑定)开发,是一款架构优秀的虚拟地球开源软件(图5-1),其数据模型针对椭球球面网格而建,而在城市三维模型展示以及矢量数据处理上目前支持不足,且在渲染时需要由Java到C语言的一次内存拷贝,性能上会打折扣。

  

  图5-1 NASA WorldWind Java架构图

  OssimPlanet继承了OSG的场景数据管理结构且实现了与NASA WorldWind类似的全球网格模型(图5-2),OSG基于C++语言,大量运用了C++模版技术,因而开发难度较大,在数据结构中主要运用树结构组织数据,用C++智能指针来实现数据的共享,用仿函数类(重载()操作符的C++类)实现事件映射。

  

  图5-2 ossimPlanet架构图

  

(二)、测试数据组织

  在全球高程和影像数据瓦片金字塔构建上,各虚拟地球产品基本一致,不同的是最上层(0层)的瓦片大小(Level Zero Tile Size),第0层可以是一个瓦片,经度跨360度,纬度跨180度,也可以是多个瓦片,NASA World Wind的第0层影像瓦片有10×5个,经纬度跨36度(图5-3),其高程数据第0层瓦片为18×9个,经纬度跨20度。

  

  图5-3 NASA World Wind第0层瓦片

  

1.瓦片金字塔模型构建

  在构建地形金字塔时,首先把原始地形数据作为金字塔的底层(图5-4),如图第2 层,并对其进行分块,形成第2 层瓦片矩阵。在第2 层的基础上,按每2×2个像素合成为一个像素的方法生成第1 层,并对其进行分块,形成第1 层瓦片矩阵。如此下去,构成整个瓦片金字塔。

  

  图5-4 瓦片金字塔的构建

  对于全球的高程和瓦片数据,分多少级是合适的呢?三维引擎的透视原理是模拟相机在标准视角下拍摄物体的情形,相机的标准视角约为25度,此时的视角高度与瓦片尺寸的比值为2,根据这一原理,如果原始图像是1米精度,视角高度为500米的卫星影像,则赤道上每一瓦片的宽度应为250米,对于周长为40000公里的地球,如果第0层是1个瓦片的话,要建0至17总计为18层的瓦片金字塔。

  

2.瓦片四叉树

  四叉树是一种每个非叶子节点最多只有四个分支的树型结构,也是一种层次数据结构,其特性是能够实现空间递归分解。图5-5 是瓦片金字塔模型的四叉树结构示意图,其中矩形符号代表叶子节点,圆形符号代表非叶子节点。

  

  图5-5 瓦片四叉树

  四叉树的层与瓦片的层对应,四叉树的节点编号是瓦片所在层的层号加上瓦片的网格坐标(见图3-2)。因此,瓦片的拓扑关系(图5-6)包括同一层内邻接关系和上下层之间的父与子关系两个方面。邻接关系有边邻接和角邻接,上下层间有向上继承和向下分解。

  

  图5-6 瓦片的拓扑关系

  

3.瓦片金字塔的编程实现

  在瓦片金字塔的编程实现上,可以有两种方式,一种是建立一个四叉树数据结构,保存瓦片上下层之间的拓扑关系,在一个节点中保存父节点和四个子节点的指针,另一种是用散列映射(hash_map)数据结构,其中瓦片的索引作为键,瓦片的智能指针作为值。

  四叉树数据结构在调入一个瓦片时必须先生成其父瓦片指针,在删除一个瓦片时必须先删除其所有子瓦片指针,不利于LRU算法的有效实施,而散列映射数据结构则要灵活得多。

  

(三)、数据的调度与可视化

  地形网格的调度过程和纹理影像的调度过程是一样的,一先一后,假设地形数据与影像数据是一起加载,则数据调度与可视化流程表示为图5-7所示。系统运行效果如图5-8所示。

  

  图5-7 数据调度与可视化流程图

  

  图5-8 测试程序运行效果图(广州大学城)

  

六、结束语

  本文从原理、工程实现以及具体编程几个方面分析和探讨了全球角度空间数据模型的构造,海量地理空间数据的组织、管理和调度,空间数据的三维可视化这三个在虚拟地球实现中所面临的难题,并在测试程序中实现了主要的功能,但在二维地理数据以及模型的可视化上,测试程序还没有实现。随着三维技术的发展,基于三维平台的地理信息应用会越来越多,这将是本文中测试程序扩展的方向。

  

参考文献

  [1] 张永生,贲进,童晓冲.地球空间信息球面离散网格——理论、算法及应用.科学出版社,2007:第一章,第二章

  [2] 李成名,王继周,马照亭.数字城市三维地理空间框架原理与方法.科学出版社,2008:第五章

Unity中基于瓦片服务的高精度三维地球构建实践 本文详细介绍了在Unity引擎中构建高精度三维地球的实践方法。核心在于利用ArcGIS Online等在线瓦片服务,通过动态网格分块与坐标转换技术,实现全球地表纹理的实时加载与渲染。文章涵盖了从基础原理、网格生成、瓦片获取到纹理映射与GPU Instancing性能优化的完整流程,为数字孪生、虚拟地球仪等应用提供了可行的技术方案。 阅读详情

相关推荐

基于Cesium的3D地球飞行漫游系统设计与实现

在 Cesium 中,相机状态由三大要素共同描述:// 当前ECEF坐标// 视线方向// 头顶朝哪// 垂直视场角这些向量构成了一个标准的右手坐标系:Forward-directionRightUp你可以通过修改这些向量来手动控制相机姿态,例如锁定某个目标点:不过要注意,频繁手动设置方向容易导致坐标系扭曲,建议优先使用内置方法。看到这里,你应该已经意识到:Cesium 不只是一个“画地球”的工具,它是通往空间智能时代的一扇大门。

weixin_31185473的博客 790

Ossimplanet编译笔记(VS2008)(转载)

Ossimplanet编译笔记(VS2008)(转载)已有 1143 次阅读  2011-11-22 14:08   标签:  Ossimplanet  Ossim  1. 准备工作下载OSSIM、OSSIMPlanet源代码、依赖库、QT。Osgeo服务器上有太多优秀的GIS\RS开源工程:http://download.osgeo.org/进入OSSIM项目下载相关源码和依...

weixin_34375054的博客 380

ossimplanet1.86以上版本编译全纪录

相比WorldWind而言,名气并太大。虽然推荐时,我一般不推荐它,但他确实是另外一个很强大的开源数字地球。我不推荐它的原因是: 1)基于c++。光研究了解它就要花好多成本,这并不太适合国内公司和单位。门槛高,时间长,见效慢。 2)相关资料少。它涉及到太多的大型开源库,而国内翻译的资料相对少很多。不像WorldWind,拿套源代码就能开干。 但我很喜欢它,作为技术人员来说,我推荐大家去看。很多乐趣和知识在里面。很优雅,很内涵,值得收藏。

[转]这13个开源GIS软件,你了解几个?

这些开源GIS软件,你了解几个?本文内容部分来源于一份罗列了关于GIS软件应用的文章,笔者将其编译整合。   地理信息系统(Geographic Information System,GIS)软件依赖于覆盖整个地球的数据集。为处理大量的 GIS 数据及其格式,编程人员创建了若干开源库和 GIS 套件。   GIS软件以前仅限于地理学者和地质工作者使用,自从网上提供全球地图服务和移动电话公司开始提供...

weixin_33995481的博客 1200

geogrid:离散全球网格系统库

土工格栅 该库geogrid提供了方法来生成和使用逆斯奈德等面积投影(ISEA)处理ISEA光圈3六角离散全球网格系统(ISEA3H DGGS)。 科学出版物 可在以下库中找到ISEA3H DGGS的概述以及该库中使用的标识符方案: FB Mocnik: 地图学与地理信息科学46(3),2019,227–291 ISEA3H最初是由以下人员提出的: K Sahr,D White和AJ Kimerling:。 地图学与地理信息科学,30(2),2003,121–134。 doi:10.1559 / 152304003100011090 提出了这一预测,并通过以下方式进行了详细描述: JP Snyder:。 Cartographica,29(1),1992,10-21。 doi:10.3138 / 27H7-8K88-4882-1752 相关软件 可以使用JavaScript库在浏览

全球离线地图(1-6级)tif资源

全球离线地图(1-6级)tif资源

虚拟地球原理与实现(转载)

本文转自:http://www.cpiso.cn/jsyj/ghxx/2011/6/15/120.shtml 一、引言   目前与地理信息相关的信息绝大多数也是通过投影变换以平面的方式管理和使用,这已不能满足大范围甚至全球多分辨率海量数据管理的要求。   2005年,美国谷歌公司推出了一款免费的虚拟地球浏览软件GoogleEarth(谷歌地球),给了人们一种全新的感受,数据动态装载、地形渐进...

weixin_33708432的博客 278

【嵌入式面经】上海 70迈 线上笔试

“关注|点赞|收藏” 福利干货第一时间送达!最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

qq_56921854的博客 1136

开源!Cesium视频投射,手把手教你如何让实时视频流“长”在三维地球里!

曾经有很多朋友问我:如何在Cesium中做视频投射,能不能讲一讲实现思路?今天它来啦!源码文末自取!可能有的小伙伴还不了解:视频投射是什么东东?我们先来了解一下,这个东东它的应用场景都有啥?源码地址不浪的【Cesium案例集合源码如果开源对您有帮助,也欢迎帮我们点一个免费的star,以鼓励和支持我们开源更多案例!不会Cesium的基础,也很难做出更高级的效果,所以可以了解下不浪的教程《Cesium从入门到实战》

4350

深度学习入门:一文详解BP神经网络

在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,那么应该设置为多少。实际上,隐含层节点个数的多少对神经网络的性能是有影响的,有一个经验公式可以确定隐含层。上面是对隐含层和输出层之间的权值和输出层的阀值计算调整量,而针对输入层和隐含层和隐含层的阀值调。在BP神经网络中,输入层节点没有阀值。神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据。要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训。

Machine Learning with Tutors 4万+

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2223

ECharts-GL中3D地球点击事件的特殊处理方案

在数据可视化领域,ECharts-GL作为ECharts的3D扩展库,为开发者提供了强大的三维可视化能力。其中3D地球(globe)组件是展示地理数据的常用组件,但在实际使用中,开发者可能会遇到一个特殊的技术问题:当使用scatter3D系列在地球上标记单个数据点时,点击事件无法正常触发。 ## 问题现象分析 当开发者在Vue 3等现代前端框架中集成ECharts-GL的3D地球组件时,按照常...

gitblog_07860的博客 548

【MBD开发】Simulink中的枚举

01 什么是枚举 按百度百科的词条【枚举】是在编程语言中用来存储一组固定的常量。不同编程语言的枚举语法也不一样,以C语言为例。 typedef enum{ GEAR_P, //0:P挡 GEAR_R, //1:倒挡 GEAR_N, //2:空挡 GEAR_D, //3:前进}_GEAR; 上面枚举了一个_GEAR数据,用GEAR_P表示0,GEAR_R表示1……​​​​​​​ if(current_gear==GEAR..

f6723的博客 3096

cesium加载entity图片缩放_Cesium专栏-气象卫星云图动图(附源码下载)

CesiumCesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品。它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。上一篇文章介绍了雷达产品的动图展示,这节我们用同样的原理实现卫星动图。效果图卫星云图也是一种重要的气象观测资料,与雷达产品不同的是,卫星云图的覆盖范围更...

weixin_39554434的博客 845

从零到一:手把手教你用SAM-BA工具完成嵌入式系统烧录

本文详细介绍了如何使用SAM-BA工具完成嵌入式系统烧录的全过程,包括环境搭建、硬件连接、Bootloader烧录以及完整系统镜像的烧录步骤。针对常见问题提供了实用的排查指南,并分享了批量烧录和自定义脚本的高级技巧,帮助开发者高效完成嵌入式系统开发。

weixin_42523792的博客 380

rk3576 适配以太网(百兆)

百兆以太网,也常被称为快速以太网,是一种在1990年代中期推出的计算机网络技术标准。它相当于把当时主流的10兆以太网速度提升了10倍,最高能提供 100 Mbps 的传输速率,让文件共享、视频传输等网络应用变得流畅许多。它在数据链路层面完全保留了传统以太网的帧格式和MAC机制,这意味着现有的网络软件可以无缝对接,用户从10兆网络升级到百兆网络时,通常只需要更换网卡和集线器/交换机即可,非常方便。 在rk3576平台上,原生以太网接口支持百兆、千兆,还有pcie转换的2.5G。

weixin_35723192的博客 203

一对一直播源码“附近”功能的实现,是交友利器也是社交悲哀

“一对一直播”市场火爆的背后,是现实社交的悲哀,在没有手机的时代,阡陌交通,鸡犬相闻,人与人之间面对面交流,而现在,有了手机这一便利的社交工具,邻里街坊之间的交情反而淡了。一对一直播源码中,通常会有“附近”这一功能,该功能能够迅速定位用户周边的其他用户,并同时显示两者之间的距离,借助这一功能,用户能够迅速查找自己身边有社交意愿的朋友,并与其交流沟通。那么,一对一直播源码中的定位功能是如何发挥作用的...

weixin_mlmcha的博客 101

【八股】JUC并发编程篇

👉抽象队列同步器,就是一种锁,内部维护的是一个先进先出的双向队列,队列中存储的是排队的线程,用state来标识是否有线程获得锁【0是无锁状态】👉流程:当一个线程拿到锁后会修改state = 1,这时如果有其他线程访问则会进入队列进行排序,直到state变成0后,队头线程才会拿到锁。在对state进行修改时,用的是CAS操作,所以可以保证原子性。👉它可以实现公平锁或非公平锁【默认】,上述是一个公平锁。如果新线程和队头线程抢锁资源就是非公平锁。

qq_44768318的博客 551
上一篇: 理解矩阵(三)
下一篇: 点到线段的最短距离算法
CCCStudyer
博客等级 码龄16年 14粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值