众所周知,在绘制等高线、建立数字地面模型、数字高程模型的前提必须是完成散点组网。即将若干离散的点按照相应规则(delauny)有机的组织起来,可以采用三角形亦或是方格网,之后再将各个结点附上高程,一张三维网就出现了。有了这张网,地面的复杂形态就可以较为轻松的表示出来。

之后依托这个网就可以进行等高线的运算、模型的渲染.....等等操作。这些ok了,你可能会提出更高的要求,比如带约束的构网,构网范围内抠除某个区域,抑或是提高运算速度....

这些都会比单纯构网要复杂的多。具体的原理我会在后面的博文逐一介绍。今天我先讲一下triangle三角构网库,这个库不但运行效率高、并且能通过几个参数轻松的解决前面所述的全部问题。但是他的很多命令,很多人还是不清楚,以至于不知道如何上手。这篇博文在总结了我应用的基础上带领大家快速、轻松入门triangle使用!


目录

1.triangle库简介

2.triangle库文件说明

2.1编译打包

2.2输入文件说明(poly)

2.3常用命令

2.4输出文件说明

3.总结


1.triangle库简介

这个库是目前采用的还是2005年发布的版本,底层是用C语言编写的,官网地址如下,可以在官网下载源代码查看:

Triangle: A Two-Dimensional Quality Mesh Generator and Delaunay Triangulatorhttps://www.cs.cmu.edu/~quake/triangle.html

这个库在python中也有延伸,python地址如下:

GitHub - drufat/triangle: Python bindings to the triangle libraryPython bindings to the triangle library. Contribute to drufat/triangle development by creating an account on GitHub.https://github.com/drufat/triangle但是python中的文档说的不够好,建议用原始文档学习。

2.triangle库文件说明

2.1编译打包

因为源文件是C语言编写的,所以使用前你需要对他进行打包,或者你可以将源代码直接集成到你得程序里,有关如何打包,在源代码的README文件中有说明,也可以参考下这个博主写的文章。在Ubuntu18.04上编译SUNTANS模型_HHU_HuLihan的博客-CSDN博客在Ubuntu18.04上编译SUNTANS模型SUNTANS模型编译准备下载源代码所需库的安装MPICH的安装ParMetis的安装Triangle的安装编译SUNTANS模型测试算例SUNTANS模型SUNTANS模型是非静压(Non-Hydrostatic)三维海洋模型。其中,SUNTANS是Stanford Unstructured Nonhydrostatic Terrain-following Adaptive Navier-Stokes Simulator的缩写。该海洋模型的控制方程为Bohttps://blog.csdn.net/weixin_42848392/article/details/114308892

2.2输入文件说明(poly)

很多小伙伴一上来会被一堆文件弄的头晕眼花,其实triangle只认.poly文件,你的程序在使用之前,只需要按照规则编写.poly文件,扔给triangle即可构网。poly文件格式的介绍如下:

poly文件分为三个部分:点、线(边)、洞

poly文件demo。

注意:

① .poly文件本质是文本,但后缀为.poly;文件中“#”开头为注释内容,不会参与构网!

②“点”部分若“属性”为0,则后续点不必写出该“属性”标记

③“点”部分若“边界标记”为0,则后续点不必写出该“边界标记”

④“点”部分若“边界标记”为1,则后续点在“边界标记”位置应给出数字标记(相同边界应标记相同数字)

⑤“边”部分若“边界标记”为0,则后续边不必写出“边界标记”

⑥“边”部分若“边界标记”为1,则后续点在“边界标记”位置应给出数字标记(相同边应标记相同数字)(与“点”部分要一致)

⑦“洞”部分一定要给出洞的数量,如果没有孔洞,就标记0

⑧“洞”后续部分应标记洞的中心坐标【不是索引】【只要在洞的内部即可】

2.3常用命令

在编写完poly文件后,配合指定的命令,triangle就可以快速构网(实测67个万点构网仅5秒)。triangle命令很多,但是常用的就这几个,我简单说一下都能干嘛!想看完整文档的请点击连接:

https://www.cs.cmu.edu/~quake/triangle.switch.htmlhttps://www.cs.cmu.edu/~quake/triangle.switch.html

注意:

①命令区分大小写字母

②命令可以任意组合搭配

-c:自动计算离散点的凸包范围,并将最外围点连起来作为图形边界进行构网

-p:约束构网命令,存在约束线的情况一定要用

-q:优化生成的三角形最小角的大小,-q0,-q30......后面跟着的数字影响三角形最小角的大小

-a0.05:指定三角形的最小面积为0.05㎡

-D:尽可能让三角形满足delauny三角构网原则

我常用:-cpqD

2.4输出文件说明

triangle在给定输入文件poly文件后,一般情况下会自动生成3个辅助文件,后缀依次是.ele/.1.poly/.node。这三个文件分别记录着不同内容,可以根据需要进行获取,本质上还是文本文档。

.ele文件【最核心】:记录着所有的三角形,每一行代表一个三角形,三角形顶点是点的索引(坐标可根据poly文件或node文件获取)。

.node文件:记录所有的节点【基本上是poly文件“点”的内容】

1.poly文件:记录所有的边【基本上是poly文件“边”的内容】

3.总结

当triangle能正常生成上述三个文件的时候,就证明组网成功了,将ele文件可视化就是你想要的网型!篇幅有限,后续我将逐步深化各个部分的讲解。欢迎大家评论区留言交流!

【保姆级教程】三角网生成库---triangle快速入门及使用说明(再不会就说不过去了啊兄弟)相关推荐

  1. 【Midjourney实操】逼真到颤抖!保姆级教程教生成效果炸裂的图片

    最近,许多由Midjourney V5创作的画作在网络上引起了热议,许多人惊呼:人类画师, 插画师, 设计师统统活不下去了! 比如下面这张中国情侣的画作: 因为前段时间这个很火, 我跟着同样的prom ...

  2. 【ESP 保姆级教程】 自定义库篇 ——FeiShuMessageIoTSDK,支持简单快速接入飞书消息提醒,方便接入告警服务(模拟西游记经典对白)

    忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️ ❤️ 本篇创建记录 2022-05-06 ❤️ ❤️ 本篇更新记录 2022-05-06 ❤️

  3. 6000字 “保姆级” 教程 | 讲述Pandas库的数据读取、数据获取、数据拼接、数据写出!

    1. pandas介绍 Pandas是一个强大的数据分析库,它的Series和DataFrame数据结构,使得处理起二维表格数据变得非常简单. 基于后面需要对Excel表格数据进行处理,有时候使用Pa ...

  4. 【JavaSE】保姆级教程|1万字+10张图入门到学会类与对象(建议收藏)

  5. 快速上手Springboot项目(登录注册保姆级教程)

    本文章对SpringBoot开发后端项目结构做了简单介绍,并示范了使用SpringBoot+MySQL实现登录的后端功能,与本博客的另一篇文章 Vue 实现登录注册功能(前后端分离完整案例) | Ma ...

  6. XML快速入门的保姆级教程!!!

    XML快速入门的保姆级教程!!! 简介 基础语法 组成部分 约束 约束分类 DTD schema 解析 Jsoup Jsoup:工具类,可以解析html或xml文档,返回Document对象 Docu ...

  7. Windows安装Python-docx三方库(保姆级教程)

    Windows安装Python-docx三方库 文章目录 Windows安装Python-docx三方库 前言 下面是离线安装python-docx库 一.下载python-docx库 二.安装doc ...

  8. 《软件安装与使用教程》— Windows操作系统快速安装MATLAB最新最全教程(保姆级教程以MATLAB2019A为例)

    <MATLAB教程>- Windows操作系统快速安装MATLAB(保姆级教程以MATLAB2019A为例) 目录 <MATLAB教程>- Windows操作系统快速安装MAT ...

  9. 数仓建设保姆级教程,离线和实时一网打尽(理论+实战)

    本文大纲: 因内容较多,带目录的PDF查看是比较方便的,点击下方链接获取完整PDF版: 数仓建设保姆级教程PDF文档 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先 ...

  10. 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下

    文档大纲: 本文上半部分之前已经发过了,传送门:50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上 此篇文章是整个文档的下半部分,将接着上半部分从第五章开始. 五.实时数仓建设核心 ...

最新文章

  1. tf keras SimpleRNN源码解析
  2. 容器学习 之 容器的组件(三)
  3. 表头大小设置_Excel技巧:单线表头及多线表头的制作方法
  4. Flash 生命终止,HTML5能否完美替代?
  5. P2408- 不同子串个数【SA】
  6. GridView 利用AspNetPager 分页时的自动编号
  7. CLIP再创辉煌!西南交大MSRA提出CLIP4Clip,进行端到端的视频文本检索!
  8. vue.js 表单 v-text
  9. 计网学习第一章:概述
  10. 卡巴斯基kis6换许可文件key教程(转)
  11. html5数字在线处理,Qunee for HTML5 - 中文 : 事件处理
  12. 关于HTML按钮跳转方法(及其相关)
  13. 3d max材质贴图
  14. python中pos什么意思_python pos是什么
  15. Python-修改图片分辨率
  16. java如何批量生成二维码,并返回成压缩包形式?
  17. 分享陌陌怎么站街引流附近如何不屏蔽
  18. CS224N Assignment 1: Exploring Word Vectors (25 Points)
  19. 微信公众号自定义菜单CLICK返回的是大写
  20. MarkDown: 为字体添加颜色

热门文章

  1. Todd.log - a place to keep my thoughts on programming
  2. Golang-web网站入门-服务器入门
  3. 正则表达式在一个字符串上多次搜索、正则表达式匹配书名等
  4. 微信平台开发获取微信用户的OPENID
  5. 【基于Java语言的Android个人开发笔记,开屏引导页】利用ViewPagerFragment实现引导页
  6. python 全栈开发是什么意思_我为什么说Python是全栈式开发语言?
  7. solaris学习6:帐号、安全管理
  8. FME抓取遥感影像瓦片地图服务
  9. JavaSE进阶篇【6】——2022年7月2日
  10. 华为程序员频交 Linux 内核补丁遭质疑,管理员后续回应:承认贡献,但请不要琐碎提交