Check if triangle mesh is orientable

842 Views Asked by At

I have two triangle meshes and want to know whether they are orientable or not.

enter image description here

I think the right one is orientable and the left one is not orientable because it's a Möbius band. But I am not sure.

How can I check/test/prove if one is orientable or not?

1

There are 1 best solutions below

0
On BEST ANSWER

An orientation of a triangle is a particular choice of circular ordering of its vertices (e.g. $abc$ or $acb$, i.e. clockwise or counterclockwise). For two adjacent triangles to have consistent orientation, their common edge should have different orientation in the triangles. Say, we have triangles $abc$ and $bcd$. In $abc$ it goes from $b$ to $c$, while in $bcd$ it goes from $b$ too $c$ as well, making the whole orientation inconsistent. In $bdc$ or $cbd$ or $dcb$ (these three orderings define the same orientation) it goes from $c$ to $b$, making the orientation of $abc$ and $bdc$ consistent. (draw this all on paper if it doesn't make sense: a picture does a lot here)

So, the algorithm is: pick any triangle, assign any orientation to it, then go to neighbouring triangles (via BFS is DFS, it doesn't matter), and decide the orientation for those, which is forced to be one or another due to already oriented neighbors. If at some point you find inconsistency — that is, several neighbors force a single triangle to have different orientations, — the surface is non-orientable. Otherwise, when there are no more neighbors, you've found an orientable connected component of the mesh.