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

         众所周知,在绘制等高线、建立数字地面模型、数字高程模型的前提必须是完成散点组网。即将若干离散的点按照相应规则(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文件可视化就是你想要的网型!篇幅有限,后续我将逐步深化各个部分的讲解。欢迎大家评论区留言交流!

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦_恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值