如何检测所选顶点是否位于三角形网格的边界上?

How to detect if selected vertex lies on the border of a triangle mesh?

我有一个用顶点坐标列表表示的三角形网格,三角形存储在顶点索引列表和角索引列表中。我还有一个角 table 存储顶点坐标、下一个角、前一个角、对角和左右角(入射三角形的)。在我的程序中,用户可以 select 一个顶点,但是我无法检测 selected 点是否位于网格的边界上(因为它需要独特的处理)。我设法检测到它所在的三角形是否是边界三角形。但是如何检查 selected 顶点是否也是边界顶点?

有多种方法可以识别边界顶点。

顶点 v 是边界顶点

  • 如果它属于至少一个边界边(只有一个相邻面的边)或
  • 如果点边图中v的邻域不形成环

如果你想识别三角形网格中的顶点 v,你可以计算每个邻域顶点 w 有多少条 (v,w) 边。如果存在只有一条 (v,w) 边的顶点 w,则顶点 v(以及顶点 w)将是边界顶点。