我有一个 3D 模型,表示如下:
class Vertex
{
double x, y, z;
}
class Edge
{
Vertex *v1, *v2; // no particular order
Face *f1, *f2; // no particular order. f2 may be null.
}
class Face
{
List<Vertex*> vertices; // clockwise order
List<Edge*> edges; // clockwise order
}
class Model
{
List<Face*> faces;
List<Vertex*> vertices;
List<Edge*> edges;
}
当然,这可以转换为最方便的任何表示。
我想将这个模型分割成几个断开的部分,沿着连接边缘的多个循环,并创建新的面来覆盖末端。一个循环的例子:
新面孔应该在相同的位置,并且除了它们与其他面孔的连接之外是相同的,但是对于这个例子,我已经将它们分开了。我怎么能这样做?
顶点是否在其他断开的部分之间共享并不重要。
由于每条边都恰好连接两个面,因此我尝试将每条边分别分成两个副本(每个面一个)。这确实根据需要分离了模型,但是我看不到正确添加新面孔的方法。
这个问题被标记为图算法,因为这个问题似乎与图论有关。