Creo que este enfoque es el más sencillo para los cuadriláteros 3D planos y convexos:
Suponga que tiene cuatro puntos $(A,B,C,D)$ y que quieres comprobar si AC es realmente una diagonal del cuadrilátero. Si lo es, los ángulos $\angle CAB$ y $\angle CAD$ tendrán diferentes orientaciones (en el sentido de las agujas del reloj).
Esto significa que los vectores $\vec{c}_1$ y $\vec{c}_2$ definidos como productos cruzados:
$$\vec{c}_1=\vec{AC}\times\vec{AB}$$
$$\vec{c}_2=\vec{AC}\times\vec{AD}$$
...serán ambas perpendiculares al plano del cuadrilátero $ABCD$ pero con direcciones opuestas . Esto significa que su producto escalar debe ser negativo:
$$s = \vec{c}_1 \cdot \vec{c}_2 < 0$$
El algoritmo es el siguiente:
$$\vec AC=(x_C-y_A)\vec{i}+(y_C-y_A)\vec{j}+(z_C-z_A)\vec{k}=p_1\vec{i}+q_1\vec{j}+r_1\vec{k}$$
$$\vec AB=(x_B-x_A)\vec{i}+(y_B-y_A)\vec{j}+(z_B-z_A)\vec{k}=p_2\vec{i}+q_2\vec{j}+r_2\vec{k}$$
$$\vec AD=(x_D-x_A)\vec{i}+(y_D-y_A)\vec{j}+(z_D-z_A)\vec{k}=p_3\vec{i}+q_3\vec{j}+r_3\vec{k}$$
$$\vec{c}_1=\vec{AC}\times\vec{AB}=(q_1r_2-q_2r_1)\vec{i}+(r_1p_2-r_2p_1)\vec{j}+(p_1q_2-q_2p_1)\vec{k}=c_{1x}\vec{i}+c_{1y}\vec{j}+c_{1z}\vec{k}$$
$$\vec{c}_2=\vec{AC}\times\vec{AD}=(q_1r_3-q_3r_1)\vec{i}+(r_1p_3-r_3p_1)\vec{j}+(p_1q_3-q_3p_1)\vec{k}=c_{2x}\vec{i}+c_{2y}\vec{j}+c_{2z}\vec{k}$$
$$s=\vec{c1}\cdot\vec{c2}=c_{1x}c_{2x}+c_{1y}c_{2y}+c_{1z}c_{2z}$$
Si $s<0$ , $AC$ es una diagonal del cuadrilátero.
Si no es así, debe intentarlo sólo una vez más, intercambiando los lugares por $C$ y $B$ (o $C$ y $D$ ). Si vuelves a fallar, $AD$ (o $AB$ ) tiene que ser una diagonal (no es necesario comprobarlo).
EDITAR: El método puede transformarse en código de software con bastante facilidad. Todos los cálculos son sencillos y no demasiado costosos. Y sólo hay una condición "si" en el camino.
0 votos
¿Está garantizado que su cuadrilátero sea convexo ?
0 votos
Sí, el cuadrilátero será convexo.
0 votos
¿También es planar?
0 votos
Sí, los cuadriláteros serán todos planos, no sesgados.
0 votos
Encuentra las áreas de los cuatro triángulos posibles. En una combinación si la suma de los triángulos $ ABC,BCD$ es igual a la de $BAD,ADC$ entonces $BC,AD$ son las diagonales necesarias. Si no, prueba con otra combinación.