Cómo obtener el punto de intersección de dos líneas usando un producto cruzado si conozco dos puntos de cada línea

Sean A, B los dos puntos dados en la primera línea (L1) y C, D los dos puntos dados en la segunda línea (L2).

Analicemos primero el caso más simple:

  • Suponga que L1 y L2 tienen exactamente un punto de intersección, P. (*)
  • Primero tratemos con el caso 2D. (**)


Entonces, podrías representar a P usando formas paramétricas:

  • P = A + t AB —- (1)
  • P = C + s CD —- (2)

donde s y t son algunos escalares.

Igualando lo anterior, obtienes:

  • CA + t AB = s CD

Aplicando el producto cruzado con AB en ambos lados, (porque AB × AB = 0 ) obtienes:

  • CA × AB = s (CD × AB) —- (3)

Resolviendo s, y sustituyendo nuevamente en (2), obtendrá el punto de intersección P.


Implementación

Es bastante sencillo si tiene una biblioteca de geometría que admita todos estos operadores (a saber, suma, resta y producto cruzado de vectores).


Observaciones finales

(*): Los casos de borde (0 o infinitos puntos de intersección) ocurren cuando las dos líneas son paralelas, es decir, AB × CD = 0 .
(**): Suponiendo que L1 y L2 no son paralelos, para espacios de dimensiones superiores (p. Ej., 3D), dos líneas pueden no cruzarse entre sí en general. En cambio, después de calcular syt, obtendrá el par más cercano de las dos líneas.