biVector forum

Consistent normals or boundary orientation for a simplex

I’ve got four points in 3D PGA, P_1, P_2, P_3, P_4. They are neither in one plane nor on a line nor concentrated in a single point. They can be used to describe a 3-simplex. Now, one can use these points to get a description for the boundary planes. If I know nothing, I just use a cyclic permutation of three of the four points B_1 = P_1 \vee P_2 \vee P_3, B_2 = P_2 \vee P_3 \vee P_4, B_3 = P_3 \vee P_4 \vee P_1, B_4 = P_4 \vee P_1 \vee P_2.

The problem now is, that I want to have consistent normals of those planes, but B_1,\dots, B_4 do not have consistent normals. I used the test X \wedge B_i = c_i I, where X should be an inner point of the 3-simplex and c_i is a measure for the perpendicular signed distance of X to B_i. (In fact, later I want to test, if some given point lies inside the 3-simplex.)

So with the B_i given above, the c_i have different signs (more precise: two have one sign, two have another sign, the signs alternate). Consistent outward or inward pointing normals would lead to a consistent sign. I observed that by changing the order of two points in the two offending B_i, the signs are consistent afterwards and therefore the normals (which is no surprise, since the \vee is like \wedge and changes sign, when factors are interchanged).

My questions are: Why is that, that a cyclic permutation of the points does not lead to consistent normals? How do I avoid to change factors in the B_i afterwards? Is there a general rule to get consistent oriented boundarys for a pointset describing a simplex or more general a convex polygon in arbitrary dimensions?

Thanks for your help,

@joha2 From your description of the situation, I think the problem is that cyclic ordering you have chosen. The standard choice of (1-based) indices for the basis 3-vectors is \{132, 234,143, 124\}. These are chosen to satisfy e_i \wedge e_{jkl} = e_{ijkl} (the unit pseudoscalar) where i is the index not included in \{j,k,l\}. e_{jkl} is sometimes said to be the right complement of e_i.
The first and third of these choices differ in sign from your choices. I expect that if you switch the index sequence 412 to be 421 and the sequence 234 to be 243, the problems should go away.

To see why the ordering matters: Choose the coordinate system to be e_i = P_i. Then note that the products X \wedge B_i essentially reduce to the unit pseudoscalar, and if the indices used to produce B_i were in the wrong order, you get an unwanted minus sign.

@cgunn3 thank you for your fast response! The hint with the “right complement” was very valuable: P_1 \vee P_2 \vee P_3 \vee P_4 gives the volume of the 3-simplex with a specific sign. When I write down the planes B_i and “vee” them with the missing point on the right I always get the volume back but with different signs, so
B_1 \vee P_4 = V, B_2 \vee P_1 = -V, B_3 \vee P_2 = V, B_4 \vee P_3 = -V. The sign is also connected with the number of swap operations needed to come back from the given order to the “canonical” order P_1 \vee P_2 \vee P_3 \vee P_4. The recipe is to change the first pair of points in their order if the corresponding volume of all four points is negative. This leads to a consistent orientation of the normals. This can also be generalized to higher dimensions (although e.g. in 4-dim. the cyclic permutation leads always to the same sign of the volume). Thank you for your help!