Rectas que se cruzan en el espacio y recta perpendicular a ambas a partir de puntos genéricos

Usaremos el módulo Geometry de sympy para obtener la recta perpendicular a dos rectas que se cruzan en el espacio. De las posibles alternativas existentes para hacer este tipo de problemas se ha optado por la opción de usar puntos genéricos y el producto escalar. De nuevo se usa el backend de Plotly de la la librería Sympy Plotting Backends’s para hacer una representación gráfica sencilla del problema. Usando el paquete de LateX pythontex, el archivo LyX propuesto nos va a permitir resolver este tipo de problemas con solo cambiar los datos que se introduzcan en el código python.

Un enunciado posible del problema que vamos a resolver es:

Ejercicio

Dadas las rectas \(r\equiv\begin{cases} x+y+1=0\\ z-1=0 \end{cases}\) y \(s\equiv\left\{ \begin{array}{ccc} x & = & 2t\\ y & = & 4t-5\\ z & = & 2t-4 \end{array}\right.\)

  1. Determina su posición relativa.
  2. Halla los puntos de corte de la recta perpendicular a ambas rectas.
  3. Determina, en forma vectorial, la ecuación de la recta que corta perpendicularmente a ambas rectas.
  4. A partir del apartado 2, halla la distancia entre ambas.
  5. Comprueba que el resultado anterior coincide con el que se obtiene haciendo uso de la fórmula para clacular la distancia entre dos rectas que se cruzan mediante el producto vectorial y el producto mixto.

Podemos optar por poner los datos de entrada de forma manual o que se generen de forma aleatoria:

#Podemos trabajar con dos opciones:
# 1 -> Datos manuales a partir de las rectas.
# Se tienen que introducir los valores de dos rectas que se cruzan,
# en ambos casos, a partir de dos puntos.
# 2-> Datos aleatorios a partir de dos puntos del espacio
# que son números enteros, serán la solución del apartado 2
#Si no ponemos que opción es "m" siempre se hace con datos aleatorios.
opcion='a'
  • Si se opta por manual, podemos modificar los valores

    #if opcion=='m':
        #Datos recta r: a partir de dos puntos.
        p1R=Point3D(2,1,0)
        p2R=Point3D(2,1,1)
        #Datos recta s: a partir de dos puntos.
        p1S=Point3D(2,-1,-1)
        p2S=Point3D(3,0,-1)
    
  • En el caso de optar por que se generen los datos de forma aleatoria, solo debemos cambiar (si se desea)

    #Datos aleatorios a partir de dos puntos del espacio
        #serán la solución del apartado 2
        #que son números enteros
        # Valores mínimos y máximos para las coordenadas aleatorias de los puntos.
        vm=-2
        vM=3
    

El gráfico creado para representar las dos rectas y los tres puntos se consigue con las líneas de código:

#Vamos a usar el backend Plotly de spb si queremos usar usar MatplotLib se puede quitar backend=PB o poner backend=MB
# al usar Plotly podemos exportarlo a html y el formato puede ser más atractivo
#Con show=False no muestra el gráfico cuando lo compilamos, si cambiamos a True
# nos abre el navegador web para poder verlo
camara=dict(eye=dict(x=2,y=2,z=0.1))
aspecto=dict(x=1, y=1, z=1)
graf=plot_geometry((raux,"r"),(saux,"s"),(rPQ,'Recta perpendicular'),(Pu,"Pr"),(Qt,"Ps"),aspect=aspecto,camera=camara,show=False,backend=PB)
graf.save('rectas-cruzan.svg')
#Podemos guardar el gráfico en formato html y mostrarlo y manipularlo con el navegador web
#debemos poner la ruta, en caso contrario lo guarda en los ficheros temporales de LyX
#graf.save('/path/rectas-cruzan.html')

De la misma forma que se comentó en el artículo de Rectas que se cortan en el espacio y punto de corte la última línea está comentada. Si se modifica de forma adecuada se consigue un fichero html (además del svg de siempre) que nos permite poder manipular con un navegador la representación gráfica obtenida con Plotly. El resultado de una de las posibles soluciones se puede ver en un enlace que hay al final del artículo.

A partir de los valores de entrada anteriores (obtenidos de forma aleatoria), la solución del problema que se obtiene es:

Solución

  1. Introduciendo parámetros en la ecuación de la recta \(r\) y, si es posible, simplificando los vectores directores, tenemos que:

    \begin{equation*} r\equiv\begin{cases} x+y+1=0\\ z-1=0 \end{cases}\Rightarrow\left\{ \begin{array}{ccc} x & = & 2-u\\ y & = & u-3\\ z & = & 1 \end{array}\right.\Rightarrow\begin{cases} P_{r} & \left(2,\ -3,\ 1\right)\\ \vec{u_{r}} & \left(-1,\ 1,\ 0\right) \end{cases} \end{equation*}
    \begin{equation*} s\equiv\left\{ \begin{array}{ccc} x & = & 2t\\ y & = & 4t-5\\ z & = & 2t-4 \end{array}\right.\Rightarrow\begin{cases} P_{s} & \left(0,\ -5,\ -4\right)\\ \vec{u_{s}} & \left(1,\ 2,\ 1\right) \end{cases} \end{equation*}

    Nuestras rectas se cruzan ya que:

    • Ambos vectores no son proporcionales

    • Si calculamos el vector \(\overrightarrow{P_{r}P_{s}}=\left(0,\ -5,\ -4\right)-\left(2,\ -3,\ 1\right)=\left(-2,\ -2,\ -5\right)\) el rango de la matriz

      \(rango\begin{pmatrix}-1 & 1 & 0\\ 1 & 2 & 1\\ -2 & -2 & -5 \end{pmatrix}=3\) ya que \(\left|\begin{matrix}-1 & 1 & 0\\ 1 & 2 & 1\\ -2 & -2 & -5 \end{matrix}\right|\)\(=11\)

  2. Hallamos un punto genérico \(P_{g}\) de la recta \(r\) (que dependerá de su parámetro, por ejemplo, \(u\)). Como la ecuación paramétrica de la recta \(r\) es \(\left\{ \begin{array}{ccc} x & = & 2-u\\ y & = & u-3\\ z & = & 1 \end{array}\right.\) obtenemos:

    \begin{equation*} P_{g}=\left(2-u,\ u-3,\ 1\right) \end{equation*}

    Hallamos otro punto \(Q_{g}\) genérico de la recta \(s\) (dependerá de otro parámetro \(t\)).

    \begin{equation*} Q_{g}=\left(2t,\ 4t-5,\ 2t-4\right) \end{equation*}

    Calculamos el vector \(\overrightarrow{\mathit{P_{g}Q_{g}}}\) , que dependerá de dos parámetros.

    \begin{align*} \overrightarrow{\mathit{P_{g}Q_{g}}}=\left(2t,\ 4t-5,\ 2t-4\right)-\left(2-u,\ u-3,\ 1\right)=\\=\left(2t+u-2,\ 4t-u-2,\ 2t-5\right) \end{align*}

    Imponemos que el vector anterior sea perpendicular a los vectores directores de las rectas \(r\) y \(s\), y por lo tanto, los productos escalares que siguen deben dar cero.

    \begin{equation*} \begin{gathered}\vec{u}_{r}\cdot\overrightarrow{\mathit{P_{g}Q_{g}}}=\left(-1,\ 1,\ 0\right)\cdot\left(2t+u-2,\ 4t-u-2,\ 2t-5\right)=\\2t-2u=0\\ \vec{u}_{s}\cdot\overrightarrow{\mathit{P_{g}Q_{g}}}=\left(1,\ 2,\ 1\right)\cdot\left(2t+u-2,\ 4t-u-2,\ 2t-5\right)=\\12t-u-11=0 \end{gathered} \end{equation*}

    Nos queda un sistema de dos ecuaciones con dos incógnitas, si resolvemos el sistema

    \begin{equation*} \begin{cases} 2t-2u & =0\\ 12t-u-11 & =0 \end{cases} \end{equation*}

    obtenemos que \(u=1\) y \(t=1\). Sustituyendo esos valores en las ecuaciones paramétricas obtenemos que los puntos \(P_{r}\left(1,\ -2,\ 1\right)\) y \(Q_{s}\left(2,\ -1,\ -2\right)\) están sobre la perpendicular.

  3. La perpendicular común es la recta que pasa por \(P_{r}\left(1,\ -2,\ 1\right)\) y \(Q_{s}\left(2,\ -1,\ -2\right)\). Si calculamos

    \begin{equation*} \begin{gathered}\overrightarrow{\mathit{P_{r}Q_{s}}}=\left(2,\ -1,\ -2\right)-\left(1,\ -2,\ 1\right)=\\=\left(1,\ 1,\ -3\right)\end{gathered} \end{equation*}

    la ecuación pedida en forma vectorial es:

    \begin{equation*} (x,y,z)=\left(1,\ -2,\ 1\right)+\alpha\cdot\left(1,\ 1,\ -3\right) \end{equation*}
  4. Por último, la distancia entre las dos rectas que se cruzan es la distancia entre \(P_{r}\) y \(Q_{s}\)

    \begin{equation*} d(r,s)=|\overrightarrow{\mathit{P_{r}Q_{s}}}|=\sqrt{\left(1\right)^{2}+\left(1\right)^{2}+\left(-3\right)^{2}}=\sqrt{11} \end{equation*}
  5. Sea \(P_{r}\) un punto cualquiera de la recta \(r\) y \(P_{s}\) cualquiera un punto de la recta \(s\), entonces:

    \begin{equation*} d(r,s)=\frac{\left|\left[\vec{u}_{r},\vec{u}_{s},\overrightarrow{\mathit{P_{r}P_{s}}}\right]\right|}{\left|\vec{u}_{r}\times\vec{u}_{s}\right|} \end{equation*}

    Un punto \(P\) de la recta \(r\) es el punto \(P_{r}=\left(2,\ -3,\ 1\right)\) , y un punto de la recta \(s\) puede ser \(P_{s}=\left(0,\ -5,\ -4\right)\Rightarrow\overrightarrow{\mathit{P_{r}P_{s}}}=\left(0,\ -5,\ -4\right)-\left(2,\ -3,\ 1\right)=\\=\left(-2,\ -2,\ -5\right)\)

    \begin{equation*} \left|\left[\vec{u}_{r},\vec{u}_{s},\overrightarrow{\mathit{P_{r}P_{s}}}\right]\right|=|det\begin{pmatrix}-1 & 1 & 0\\ 1 & 2 & 1\\ -2 & -2 & -5 \end{pmatrix}|=|11|=11 \end{equation*}
    \begin{equation*} \overrightarrow{u}_{r}\times\overrightarrow{u}_{s}=\left(\left|\begin{array}{cc} 1 & 0\\ 2 & 1 \end{array}\right|,-\left|\begin{array}{cc} -1 & 0\\ 1 & 1 \end{array}\right|,\left|\begin{array}{cc} -1 & 1\\ 1 & 2 \end{array}\right|\right)=\left(1,\ 1,\ -3\right)\Rightarrow \end{equation*}
    \begin{equation*} \left|\overrightarrow{u}_{r}\times\overrightarrow{u}_{s}\right|=\sqrt{(1)^{2}+(1)^{2}+(-3)^{2}}=\sqrt{11} \end{equation*}

    Por tanto: \(d(r,s)=\frac{\left|\left[\vec{u}_{r},\vec{u}_{s},\overrightarrow{\mathit{P_{r}P_{s}}}\right]\right|}{\left|\vec{u}_{r}\times\vec{u}_{s}\right|}=\frac{11}{\sqrt{11}}=\sqrt{11}\)

image

Html generado con el gráfico que se puede ver desde:

Fichero fuente y el pdf final de una posible compilación.