Hola
Buenas tardes, necesito ayuda para calcular el punto de intersección de dos rectas en el espacio, teniendo dos puntos de cada recta. Además, necesito programarlo en C#, por lo que me gustaría poder evitar el método de igualar ecuaciones de la recta ya que no tengo las ecuaciones de las rectas, solo el vector director y un punto de cada una de ellas, recuerdo que es en el espacio. Tampoco soy ningun profesional de las matemáticas, por lo que igual se me escapa algo y la respuesta es sencilla pero llevo un largo rato intentándolo y no lo consigo. Gracias!
Si las rectas pasan respectivamente por los puntos \( P,Q \) y tienen como vectores directores \( u,v \), un punto común \( X \) cumple para ciertos reales \( (t,s) \):
\( X=P+tu=Q-sv \) es decir \( Q-P=tu+sv \).
Si formas las matrices:
\( B=\begin{pmatrix}q_1-p_1\\q_2-p_2\\q_3-p_3\\\end{pmatrix},\quad A=\begin{pmatrix}u_1&v_1\\u_2&v_2\\u_3&v_3\\\end{pmatrix},\quad
Y=\begin{pmatrix}t\\s\\\end{pmatrix} \)
equivale al sistema:
\( B=AY \)
Es un sistema sobredimensionado (con mas ecuaciones que incógnitas). Lo puedes resolver por mínimos cuadrados multiplicando por \( A^t \).
\( A^tB=A^tAY \) y así \( Y=(A^tA)^{-1}A^tB \).
Una vez que tengas \( Y \) en particular tienes \( t \) y el punto de corte es:
\( X=P+tu \).
Alguna observación:
1) Si \( A^tA \) no tiene inversa, es decir, tiene determinante cero, es porque las rectas son paralelas y por tanto salvo que sean la misma recta no se cortan.
2) Hay rectas que se cruzan (ni son paralelas ni se cortan) y de hecho esa es la situación más general; aún así en este caso el algoritmo te da una solución que minimiza el error cuadrático del problema planteado. Puedes evaluar ese error calculando [te]\|B-AY\|[/tex]; si las rectas se cortan debería de dar cero y en otro caso no se cortan. Pero puedes permitir un valor pequeño, menor que una tolerancia fijada por si se arrastra algún error de redondeo.
3) El sistema que hay que resolver es \( 2\times 2 \) (o la inversa). Si tienes algún problema para programar las fórmulas dilo.
4) Adicionalmente hay métodos específicos para programar la resolución de esos sistemas de manera más o menos óptima. Para matrices tan pequeñas en principio no vale la pena complicarse mucho con ellos (con algún matiz sobre errores de redondeo).
Saludos.