Let’s say I have a mesh that has lines connecting the vertices in a way that would allow it to be split into tetrahedra. Is there an algorithm I can use to detect the presence of the tetrahedra given the vertices and lines? (I.e., given the mesh with connecting lines, output a set of tetrahedra that have the same shape and volume.)
Edit: Tetrahedra are not allowed to intersect.
I think a graph-based approach may work.
First, the list of triangular faces can be recovered by noting that the set of edges define an undirected graph
G1(V1,E1)for connectivity between the geometric vertices. A triangular face is any length 3 cycle in this graph.Next, the tetrahedra can be recovered by forming the undirected graph
G2(V2,E2)defining the connectivity between faces (i.e. faces are connected if they share an edge). A tetrahedra is any length 4 cycle in this graph.Hope this helps.