网站首页 > 知识剖析 正文
需求
“threejs中能不能给定几组三维坐标(或者CAD绘制的三维多段线),给一个断面形状,直接生成三维管道?”
例如原始CAD图如下:
要求用threejs获取线的三维坐标数据自动生成的三维管道效果图如下:
分析
如果直接对每条线用threejs中的 THREE.TubeGeometry 去绘制的话,会出现交岔口出现缝隙的情况,如下图所示:
如何解决交岔口出现缝隙的问题成为了难题。
上网一搜索,发现与之类似的问题,在能源行业,“矿井巷道三维自动建模“这个很热门的话题,很多硕士博士都在研究。
于是果断的在淘宝花了几块大洋买了90天下载文献的账号,开始了下载论文,拜读论文,研究算法的苦逼过程 ...
研究了很多天后,很少有论文能把整个算法流程说的很透彻,都是说个大概原理,细节自己去琢磨吧。。。
直到偶然间发现一本专业书 <<矿山巷道三维网络模型构建及空间网络分析技术>>
看了后很有启发,用”半巷道模型“进行处理交叉口,对一些细节进行优化后,终于达到了比较满意的结果。
在线效果地址 https://vjmap.com/map3d/demo/#/demo/map/builtin/objects/03builtinobjtubepathauto
三维人员定位系统(示例已开源)
解决了上面的难题后,基于三维巷道可以做很多应用开发,比如“三维人员定位系统”
实现的功能有:
- 解析CAD图中的三维多段线对象,获取三维线的坐标 (CAD图来源于 https://vjmap.com/app/cloud/#/map/sys_tube?version=v1&mapopenway=GeomRender&vector=false
- 根据三维线坐标自动建立拓扑关系。(因为绘制的时候是一整条绘制的,需要处理成按节点进行关系分析来处理交叉口)
- 根据数据自动生成三维巷道和处理交叉口
- 模拟人员移动数据,在三维图上实时展示人员位置
- 点击人员可查看详细
- 可查看人员历史轨迹
- 可根据一个坐标自动查找最近的出口
实现效果如下:
此示例代码已开源,可访问 https://vjmap.com/effect/person/ 在线查看。
更多示例可查看 https://vjmap.com/map3d/example.html
猜你喜欢
- 2024-11-14 vue.js正确使用百度地图的方案 vue百度地图自定义控件
- 2024-11-14 七爪源码:如何在 JavaScript 中将 JSON 转换为地图
- 2024-11-14 在地图上创建热力图的方法 怎么用热力图选址
- 2024-11-14 快速了解 ES6 的Map与WeakMap es6 map使用场景
- 2024-11-14 Vue3 + TS + Leafletjs 打造企业级原神大地图
- 2024-11-14 好东西一起用,Cesium.js真是让3D地图尖叫的神奇框架!
- 2024-11-14 为 Next.js 项目创建站点地图文件
- 2024-11-14 JavaScript 轻松获取 Map 中的某个 key
- 2024-11-14 何时使用 Map 来代替普通的 JS 对象
- 2024-11-14 基于MapBox源码在内网中加载离线卫星地图的方法
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)