【发布时间】:2020-02-11 12:08:40
【问题描述】:
我正在使用 THREE.JS,并且我有一个具有不同表面的网格。我得到了每个表面的顶点。现在我想创建边(用线连接顶点)。顶点的顺序是任意的,所以我不能简单地将 v1 与 v2、v2 与 v3 等连接起来。我想我必须用顺时针或逆时针方向的光线穿过它们,并以某种方式将它们按正确的顺序排列,我必须以某种方式检查它们的距离,这样内部顶点之间的水平线就不会出现,而是应该去沿着真正的边缘,但我不知道如何......有什么想法吗?
【问题讨论】:
-
请准确描述可获得的信息。
-
我得到了关于面(蓝色三角形)顶点和法线的信息,我得到了所有表面的角的位置(在这种情况下是 8 个角(这里有球体在它的位置棕色表面)
-
什么“信息”?具体一点。
-
如果您不知道顶点的顺序,我看不出在一般情况下您如何做到这一点。
-
@YvesDaoust - 关于面,我得到了它们所有的 3 个顶点(位置)、法线和 ID。表面:我检查具有相同法线的面以及它们是否彼此相邻 - 如果是,则将它们的 ID 添加到一个数组中(因此对于每个表面都有一个数组)。我对它进行了编程,当我单击一个面时,它会在表面数组中搜索它们的 ID,并为该数组中的所有面着色。角:我让它们通过 1. 创建表面的所有面顶点的数组 2. 检查整个网格的顶点 - 如果它们与表面的面相交 -> 将它们添加到数组中
标签: math three.js geometry computational-geometry