【问题标题】:Get Edges between Vertices (outer polygon)获取顶点之间的边(外多边形)
【发布时间】:2020-02-11 12:08:40
【问题描述】:

我正在使用 THREE.JS,并且我有一个具有不同表面的网格。我得到了每个表面的顶点。现在我想创建边(用线连接顶点)。顶点的顺序是任意的,所以我不能简单地将 v1 与 v2、v2 与 v3 等连接起来。我想我必须用顺时针或逆时针方向的光线穿过它们,并以某种方式将它们按正确的顺序排列,我必须以某种方式检查它们的距离,这样内部顶点之间的水平线就不会出现,而是应该去沿着真正的边缘,但我不知道如何......有什么想法吗?

(球体是曲面的真正角的顶点,橙色线是需要校正的错误边缘,蓝色线是每个面的边缘)

我需要创建这 8 条边(红色)

【问题讨论】:

  • 请准确描述可获得的信息。
  • 我得到了关于面(蓝色三角形)顶点和法线的信息,我得到了所有表面的角的位置(在这种情况下是 8 个角(这里有球体在它的位置棕色表面)
  • 什么“信息”?具体一点。
  • 如果您不知道顶点的顺序,我看不出在一般情况下您如何做到这一点。
  • @YvesDaoust - 关于面,我得到了它们所有的 3 个顶点(位置)、法线和 ID。表面:我检查具有相同法线的面以及它们是否彼此相邻 - 如果是,则将它们的 ID 添加到一个数组中(因此对于每个表面都有一个数组)。我对它进行了编程,当我单击一个面时,它会在表面数组中搜索它们的 ID,并为该数组中的所有面着色。角:我让它们通过 1. 创建表面的所有面顶点的数组 2. 检查整个网格的顶点 - 如果它们与表面的面相交 -> 将它们添加到数组中

标签: math three.js geometry computational-geometry


【解决方案1】:

假设您能够为顶点分配一个唯一编号并将每个三角形唯一地关联到一个面,并且三角剖分是无懈可击的,则面的边缘是该面的三角形共有的那些边缘和另一个三角形。当你拥有一张脸的所有边缘时,将它们链接成一个多边形是一件小事。

【讨论】:

    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2018-04-30
    • 2017-07-19
    相关资源
    最近更新 更多