【问题标题】:How to find the neighbors of a vertex on an arbitrary mesh?如何在任意网格上找到顶点的邻居?
【发布时间】:2019-11-17 02:54:09
【问题描述】:

https://i.imgur.com/ybpvvoD.png

我有一个任意网格,就像上面链接中图片中的那个(这只是一个示例,但我需要它来处理任何网格;数字仅供参考,我不能依赖顶点排序)。

循环遍历所有顶点(假设从标记为红色的顶点开始)我需要找到标记为蓝色的四个相邻顶点。

我有以下数据:

  • 三角形数组(顶点和边)

  • 顶点数组(空间位置)

  • 边数组(顶点对)

我尝试循环遍历 Triangles 数组并选择共享起始顶点的数组,最终得到如下内容:https://i.imgur.com/Z8F0t0k.png

我怎样才能进一步过滤数据以仅以蓝色标记的四个顶点结束?

【问题讨论】:

  • 为什么顶点#37和顶点#0不是相邻顶点?
  • 它们是,但我不需要它们,我只需要 36、3、1 和 35
  • 那你怎么知道要排除哪些顶点呢?
  • 这就是问题所在。假设网格总是像这样的一些管状形状。此外,我可以保证所有三角形的方向都是这样的(尽管我不能保证顶点的顺序)。所以基本上我需要由这 5 个点(1、2、36、3、35)定义的“十字架”。
  • 你怎么知道会有一个“十字架”?什么定义了“十字架”?

标签: c# c++


【解决方案1】:

我分两步解决了:https://i.imgur.com/FVc6nUc.png

1) 选择所有共享起始顶点的三角形

2) 过滤掉符合此条件的边缘:

  • 三角形中的最长边(即斜边)
  • 不包含起始顶点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多