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).
![enter image description here]()
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)×(P−A)=0 donde U×V=Ux⋅Vy−Uy⋅Vx. 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: h(P)>0P in positive half-spaceh(P)=0P on the lineh(P)<0P in negative half-space 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 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í .