Given facet information, how to efficiently check if a polyhedron composed of triangles is closed?

Viewed 68

Let me clarify the definitions first. Consider a regular tetrahedron is composed of 4 vertices. Let's say the indices for these vertices are [0, 1, 2, 3]. Then, the definition of facet information is F = [[0, 1, 2], [0, 2, 3], [0, 3, 1], [1, 2, 3]]. A polyhedron composed of triangles is closed if any triangle facet is connected to 3 other triangles via edges. For example, a regular tetrahedron is closed.

Then, given facet information, how to efficiently check if a polyhedron composed of triangles is closed?

A naive solution to do this is as follows: making a graph that describes unordered connections between facets, then check that any node is connected to 3 other nodes. However, this naive method seems too slow for my application.

P.S. my implementation for comparing number of edges and vertices in python

    def isClosed(F): # F is list of indices triplet
        S = set()
        for triplet in F:
            for i, j in [[0, 1], [1, 2], [2, 0]]:
                a, b = triplet[i], triplet[j]
                key = (a, b) if a < b else (b, a)
                S.add(key)
        return len(F)*3 == len(S)*2
0 Answers
Related