He aquí una solución con sabor geométrico.
Primero prueba si los triángulos son paralelos o no. Si lo son, encuentra la distancia mínima $d$ entre los dos planos que ocupan; si $d\ne0$ entonces los triángulos no se cruzan, si $d=0$ entonces nuestro problema se reduce al caso planar que analizaremos en breve. Para cualquier $x\in\pi_1,y\in\pi_2$ dos planos paralelos $\pi_1$ y $\pi_2$ con un vector normal compartido $n$ tienen una distancia nula entre sí si y sólo si $(x-y)\perp n$ . La selección más fácil sería hacer $x,y$ vértices de distintos triángulos.
En el caso plano, dos triángulos se cruzan si y sólo si hay un par de aristas, una de cada triángulo, que se cruzan. Por tanto, el problema se reduce a comprobar si dos segmentos de línea se cruzan o no (para nueve pares de segmentos posibles, aunque sólo hay que comprobar un máximo de siete). Esto se puede conseguir con un método básico de mínimos cuadrados.
Si los triángulos no son paralelos, entonces se intersecan si y sólo si al menos una arista de uno de los triángulos interseca al otro triángulo, y este punto de intersección (para una arista dada) será único. Por lo tanto, diremos que el segundo triángulo está fijado al plano $\pi$ y, debido a la simetría, sólo comprueba si una arista del primer triángulo se cruza con $\pi$ Esta arista tiene puntos finales $a$ y $b$ (en realidad, puede ser necesario aplicar esta prueba hasta tres veces, una por cada arista). Además, utilice una transformación afín en todo el montaje para que el segundo triángulo tenga el origen $O$ como un vértice por conveniencia.
$\hskip 1in $
Cada punto de la línea verde tendrá la forma $r\mathbf{a}+(1-r)\mathbf{b}, r\in[0,1]$ . Todos los puntos dentro del triángulo negro serán de la forma $s\mathbf{u}+t\mathbf{v}, s,t\in[0,1]$ . Al igualar las dos expresiones tendremos una solución única como es el punto de intersección entre la línea verde y el plano en el que se encuentra el triángulo negro. Sea $X$ denotan el $3\times3$ matriz con columnas $\mathbf{b}-\mathbf{a}$ , $\mathbf{u}$ y $\mathbf{v}$ . Entonces el punto de intersección se encuentra dentro del triángulo si y sólo si $X^{-1} \mathbf{b} \in [0,1]^3$ .