Hay dos casos a considerar para determinar si dos segmentos de línea $AB$ y $CD$ se cruzan: (1) Los segmentos de la línea son no (2) los segmentos de línea son colineales (dos imágenes inferiores).
La norma $y = mx + b$ no suele ser útil, ya que omite las líneas verticales. En este caso, lo mejor es tener en cuenta lo siguiente función implícita $h(P)$ para una línea que pasa por $A$ y $B:$ $$ h(P) = (B - A) \times (P - A)= 0 $$ donde $U \times V = U_x \cdot V_y - U_y \cdot V_x.$ Tenga en cuenta que $h(P)$ define un medio espacio determinando dónde está el punto $P$ se encuentra en relación con la línea divisoria que pasa por $AB:$ $$ \begin{array}{ll} h(P) > 0 & \mbox{$P$ in positive half-space} \\ h(P) = 0 & \mbox{$P$ on the line} \\ h(P) < 0 & \mbox{$P$ in negative half-space} \end{array} $$ Así sabemos si los puntos $C$ y $D$ a lo largo de la línea (infinita) que pasa por $AB$ si ambos $h(C)$ y $h(D)$ son distintos de cero y tienen signos opuestos. En el caso general, sabemos que los segmentos de línea $AB$ y $CD$ se cruzan si los puntos $C$ y $D$ a lo largo de la línea a través de $AB$ y los puntos $A$ y $B$ a lo largo de la línea a través de $CD.$
En primer lugar, debemos tratar el caso colineal en el que $h(C) = 0$ y $h(D) = 0.$ Aquí tenemos una intersección si $$ \min(C_x,D_x) \leq max(A_x,B_x) \wedge \max(C_x,D_x) \geq \min(A_x,B_x) $$ y $$ \min(C_y,D_y) \leq max(A_y,B_y) \wedge \max(C_y,D_y) \geq \min(A_y,B_y) $$
Por lo demás, en el caso general utilizamos nuestras ecuaciones de medio espacio. El semiespacio $g(x)$ definido por $CD$ es $$ g(P) = (D - C) \times (P - C) = 0. $$ Tenemos una intersección donde $$ (h(C) \cdot h(D) \leq 0) \wedge (g(A) \cdot g(B) \leq 0). $$
Si se desea conocer el punto de intersección real, se introduce el ecuación paramétrica $L(t)$ para una línea a través de $AB$ $$ L(t) = (B - A)\cdot t + A, \ \ \ -\infty < t < \infty $$ en $g$ y resolver para $t:$ $$ g(L(t)) = (D - C) \times (L(t) - C) = 0 \\ (D - C) \times ((B - A)\cdot t + A - C) = 0 \\ t = \frac{(C - A) \times (D - C)}{(D - C) \times (B - A)} $$ Introduzca este valor para $t$ de nuevo en $L(t)$ y tienes tu punto de intersección. Por supuesto, esto supone la advertencia de que $(D - C) \times (B - A) \neq 0$ donde las líneas son no paralelamente.
Otra gran explicación de esto se puede encontrar aquí .