实验 2.8 边缘分裂操作问题

为了完成实验 2.9 的细分,需要完成 2.8 中对边缘上的边分裂操作。在进行调试的时候,发现建立的顶点关系都是正确的,如图:


然而程序紧接着就会在 return 之后,在"synchronize halfedge mesh to object"处卡住然后闪退。经过测试,是在在 halfedge_mesh.cpp 的这个地方卡住:

在这里处理到边缘顶点 v1 (id=1707) 的时候卡住,然后闪退。想问一下问题出在哪里?是否是我没有处理好边缘上某些邻接关系的情况,还是说我需要对虚拟面片做什么操作?

这里的循环只是在遍历顶点的 1-ring neighborhood,然后按面积加权求顶点法线。虽然遇到 boundary loop 时计算结果会不太对,但仍然是可以算完的,你不需要专门处理它。

结合你说的现象是闪退而不是死循环,可能是你分裂完后,某些指针仍然指向应该被删除的元素,进而在接引用时直接产生了 segmenrlt fault。