Jef*_*eff 7 algorithm geometry
我有一个3D三角形网格,我正在寻找一种算法来抵消所有的 没边界的边缘 网格的边界边缘向内,沿着三角形网格的表面.
我已经看过在一个用于充气/放气(偏移,缓冲)多边形的算法中提到的Clipper,但它并不真正处理3D,也不能保留三角形网格,我不确定是否重新三角测量结果与原始输入网格匹配的边框更容易解决问题.
关于如何实现这一目标的任何建议?
基于边界边仅由一个三角形共享的假设:
你需要
那么这就可以了
for all triangles do:
for each edge do:
normalize edge: e.p1 < e.p2
if the egde is in e2t: put edge/dummy into e2t
else: put the edge/triangle into e2t
for each point do:
put point/triangle into p2t
prune all edge/dummy from e2t
while e2t is not empty:
remove first edge/triangle from e2t -> e,t
calculate replacement points for t: e.p1,e.p2 -> q1,q2
unless the point is in pts
use p2t to update all triangles with e.p1->q1 and all with e.p2->q2:
update e2t if the modified edge is in there
add each modified point to pts
Run Code Online (Sandbox Code Playgroud)
要计算替换点,您必须找到不在同一平面上的共享三角形 - >这定义了移动点的方向。