【发布时间】:2015-11-30 21:12:28
【问题描述】:
我有一个 3D 三角形网格,我正在寻找一种算法来沿三角形网格的表面向内偏移网格的所有 无边界边缘 边界边缘。
我查看了Clipper 中提到的An algorithm for inflating/deflating (offsetting, buffering) polygons,但它并不能真正处理 3D,也不能保留三角形网格,而且我不确定重新三角化生成的边界以匹配原始输入网格更容易解决。
关于我如何实现这一点的任何建议?
【问题讨论】:
-
问题似乎有些不明确;虽然图片给出了一些粗略的概念,但究竟什么是无边框边缘?
-
我认为“无边界边缘”必须是指边界上的边缘,如您的图所示?即,仅由一个而不是两个三角形共享的边?我会以特别的方式处理它,计算新的偏移边缘坐标。我不认为你会找到这个特定任务的代码。
-
抱歉,约瑟夫是对的。这变得更复杂的是,在某些情况下需要创建新的三角形(在图片中发生),而在其他情况下,需要删除三角形。有时,即使是不在边缘的三角形也会受到影响,例如,如果它们的边界是位于边缘但小于偏移距离的三角形。
-
hmm 我会 1. 将您的网格转换为一组平面(只是边界折线
your bold black lines不是完整的三角剖分) 2. 然后根据您的缩小/修剪/移动/剪切正确的折线任务which is not described well enough3. 然后三角化回到网格。这样,您就可以在您链接的算法应该工作的二维空间中工作。如果您的网格有曲面/侧面,这将不起作用(除非您将面选择方法从平面更改为边界) -
@Spektre 对于任何具有共面三角形的网格,可能会有一个类似的网格,其中没有一个三角形是共面的,此时我又回到了我开始的地方。组合共面三角形可能有助于解决特定情况,但我认为这并不能让我更接近适用于所有情况的解决方案。