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{x+y+1=0z1=0r\equiv\begin{cases} x+y+1=0\\ z-1=0 \end{cases} y s{x=2ty=4t5z=2t4s\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 rr y, si es posible, simplificando los vectores directores, tenemos que:

    r{x+y+1=0z1=0{x=2uy=u3z=1{Pr(2, 3, 1)ur(1, 1, 0)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}s{x=2ty=4t5z=2t4{Ps(0, 5, 4)us(1, 2, 1)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}

    Nuestras rectas se cruzan ya que:

    • Ambos vectores no son proporcionales

    • Si calculamos el vector PrPs=(0, 5, 4)(2, 3, 1)=(2, 2, 5)\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(110121225)=3rango\begin{pmatrix}-1 & 1 & 0\\ 1 & 2 & 1\\ -2 & -2 & -5 \end{pmatrix}=3 ya que 110121225\left|\begin{matrix}-1 & 1 & 0\\ 1 & 2 & 1\\ -2 & -2 & -5 \end{matrix}\right|=11=11

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

    Pg=(2u, u3, 1)P_{g}=\left(2-u,\ u-3,\ 1\right)

    Hallamos otro punto QgQ_{g} genérico de la recta ss (dependerá de otro parámetro tt).

    Qg=(2t, 4t5, 2t4)Q_{g}=\left(2t,\ 4t-5,\ 2t-4\right)

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

    PgQg=(2t, 4t5, 2t4)(2u, u3, 1)=(2t+u2, 4tu2, 2t5)\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)

    Imponemos que el vector anterior sea perpendicular a los vectores directores de las rectas rr y ss, y por lo tanto, los productos escalares que siguen deben dar cero.

    urPgQg=(1, 1, 0)(2t+u2, 4tu2, 2t5)=2t2u=0usPgQg=(1, 2, 1)(2t+u2, 4tu2, 2t5)=12tu11=0\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}

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

    {2t2u=012tu11=0\begin{cases} 2t-2u & =0\\ 12t-u-11 & =0 \end{cases}

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

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

    PrQs=(2, 1, 2)(1, 2, 1)==(1, 1, 3)\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}

    la ecuación pedida en forma vectorial es:

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

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

    d(r,s)=[ur,us,PrPs]ur×usd(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|}

    Un punto PP de la recta rr es el punto Pr=(2, 3, 1)P_{r}=\left(2,\ -3,\ 1\right) , y un punto de la recta ss puede ser Ps=(0, 5, 4)PrPs=(0, 5, 4)(2, 3, 1)==(2, 2, 5)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)

    [ur,us,PrPs]=det(110121225)=11=11\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|=11ur×us=(1021,1011,1112)=(1, 1, 3)\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)\Rightarrowur×us=(1)2+(1)2+(3)2=11\left|\overrightarrow{u}_{r}\times\overrightarrow{u}_{s}\right|=\sqrt{(1)^{2}+(1)^{2}+(-3)^{2}}=\sqrt{11}

    Por tanto: d(r,s)=[ur,us,PrPs]ur×us=1111=11d(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.