增加网格细节(附加镶嵌)

Increasing mesh details (additional tesselation)

我有以下问题(作为另一个问题的解决方案的一部分:))。我有一个三角网格,上面标有一些三角形。需要将标记的三角形分成四个较小的三角形,如下所示:

   /\             /\
  /  \           /__\
 /    \   -->   /\  /\
/______\       /__\/__\

标记三角形的拆分导致也需要拆分与标记三角形相邻的三角形(一个被标记,另一个刚好相邻,最后一个保持完整):

    ____               ____
   /\   |\            /\  /|\
  /  \  | \          /__\/ | \
 /    \ |  \  -->   /\  /\ |  \
/______\|___\      /__\/__\|___\

是否有一些 C/C++ 库可以用于它?此外,保留邻接数据也很有用,因此最好在拆分后更新该邻接数据。如果它提供了一个方便的接口来处理那种数据(三角形、邻接),那会很好,即使库不能完成这项工作。

查看 VTK C++ 库。 它有一个 class vtkPolyData 可以处理您提到的操作。要检查的特定成员函数:

  • InsertNextLinkedCell
  • 插入下一个链接点
  • 替换LinkedCell

阅读链接的文档页面以了解如何使用它。 class 可用于任何类型的单元格,而不仅仅是三角形。但是你可以限制你只使用三角形。