首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从多条等高线生成三角网格

如何从多条等高线生成三角网格
EN

Stack Overflow用户
提问于 2019-04-24 07:18:16
回答 1查看 597关注 0票数 2

我需要在两条或更多条3d轮廓线之间生成一个三角网格。轮廓线只是一组点,并且始终是闭合的。

我试过使用Poly2Tri库来做delaunay三角剖分,但效果不是很好,因为它只适用于2d,虽然我可以让它在3d中工作,但它不能处理垂直堆叠的等高线(即:当3D被丢弃时具有相同的坐标)

有没有人知道哪种算法是最好的,最好是我可以从c#应用程序中使用的现有库?

EN

回答 1

Stack Overflow用户

发布于 2019-04-27 05:26:03

您可以继续使用2D Delaunay算法,但每次在两个相邻的层(z1,z2)之间执行此操作。(z1 < z2)

假设轮廓线被采样并存储为z平面上逆时针顺序的一组(x,y,z)。您需要为三角剖分构建一组边界/孔点:

  • 检测或计算重叠的线段(x1,y1,z1)(x2,y2,z1)和(x1,y1,z2)(x2,y2,z2)
  • 沿两个相邻线段的平均法线方向向内移动(x1,y1,z1)。同样,(x2,y2,z1)向内移动;(x1,y1,z2)(x2,y2,z2)向外移动。现在两条(或更多)轮廓线被分开,你得到两个(或更多)边界/孔点集。
  • 在由边界和孔定义的区域内应用Delaunay三角剖分(即生成随机点,将点放在边界外或孔内,构造三角形)。我假设Poly2Tri会处理三角形部分覆盖洞口的情况。在(x,y)平面上有了所有三角形后,通过对原始数据进行插值来恢复偏移并计算z。

对(z2,z3)层再次进行三角剖分,以此类推。请注意,z2处的洞/边界点保持不变,但如果发生重叠,它不会向内移动,而是向外移动。最后,将所有三角形合并为一个网格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55820625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档