Equazioni cartesiane della retta nello spazio

Fissato riferimento cart. affine od ortonormale, siano i due piani non paralleli, nè distinti, né coincidenti, ossia sono incidenti:

\(\pi = ax+by+cz+d=0\)

\(\pi' = a'x+b'y+c'z+d'=0\)

Come visto nella sezione 7 - Piani paralleli e coincidenti, per tale condizione il rango della matrice che ha per righe i coefficienti delle incognite deve essere pari a 2 (\(\infty^1\) soluzioni). Per tanto la retta si rappresenta tramite sistema lineare di equazioni cartesiane (retta mediante equazioni cartesiane):

\(ax+by+cz+d = 0\)

\(a'x+b'y+c'z+d' = 0\)

Determinare le equazioni cartesiane della retta

Sono sufficienti due punti di \(r\) \(P_0\) e \(P_1\) (perchè si ottiene il vettore parallelo da \(\overrightarrow{P_0P_1}\)) o un punto e il vettore parallelo \({\textbf v}\). Fissato il rif. cart. sono fornite le coordinate cartesiane di un punto della retta \(P_0(x_0,y_0,z_0)\) e le componenti di un vettore parallelo a \(r\): \({\textbf v}=l{\textbf i}+m{\textbf j}+n{\textbf k}\). Per calcolare le equazioni cartesiane della retta:

1) le componenti del vettore direzione sono tutte non nulle (\(l \ne 0, m \ne 0, n \ne 0\)):

\(\frac{x-x_0}{l} = \frac{y-y_0}{m}\\\frac{y-y_0}{m} = \frac{z-z_0}{n}\)

2) una componente del vettore è nulla, ad esempio \(l=0,m \ne 0, n \ne 0\):

\(x=x_0\\\frac{y-y_0}{m} = \frac{z-z_0}{n}\)

3) due componenti del vettore sono nulle, ad esempio \(l=0,m = 0, n \ne 0\):

\(x=x_0\\y=y_0\)

in pratica la componente diversa da 0 non appare nel sistema

Funzione riassumibile

import sympy as sp
from typing import List

def equazioniCartesianeRetta(P_0: sp.Matrix, v: sp.Matrix=None, P_1: sp.Matrix=None) -> List[sp.Expr]:
    x,y,z = sp.symbols("x y z")
    x0, y0, z0 = P_0[0,0], P_0[0,1], P_0[0,2]

    if v is None and P_1 is not None:
        v = P_1 - P_0
    elif v is None and P_1 is None:
        raise Exception("Fornire il vettore direttore o un secondo punto")

    l,m,n = int(v[0,0]), int(v[0,1]), int(v[0,2])
    r1,r2 = 0,0

    if l is not 0 and m is not 0 and n is not 0:
        r1 = ((x - x0) / l) - ((y - y0) / m)
        r2 = ((y - y0) / m) - ((z - z0) / n)

    elif l is not 0 and m is not 0 and n is 0:
        r1 = z - z0
        r2 = (x - x0)/l - (y - y0)/m
    elif l is not 0 and m is 0 and n is not 0:
        r1 = y - y0
        r2 = (x - x0)/l - (z - z0)/n
    elif l is 0 and m is not 0 and n is not 0:
        r1 = x - x0
        r2 = (y - y0)/m - (z - z0)/n

    elif l is 0 and m is not 0 and n is 0:
        r1 = x - x0
        r2 = z - z0
    elif l is 0 and m is 0 and n is not 0:
        r1 = x - x0
        r2 = y - y0
    elif l is not 0 and m is 0 and n is 0:
        r1 = y - y0
        r2 = z - z0

    return [r1,r2]

Esempi

P_0 = sp.Matrix([[2,-2,1]])
v = sp.Matrix([[2,4,2]])

equazioniCartesianeRetta(P_0, v=v)
[x/2 - y/4 - 3/2, y/4 - z/2 + 1]
P_0 = sp.Matrix([[3,1,1]])
v = sp.Matrix([[1,1,0]])

equazioniCartesianeRetta(P_0, v=v)
[z - 1, x - y - 2]
P_0 = sp.Matrix([[2,2,4]])
P_1 = sp.Matrix([[2,1,4]])

equazioniCartesianeRetta(P_0, P_1=P_1)
[x - 2, z - 4]

Riferimenti

  • https://www.youmath.it/lezioni/algebra-lineare/geometria-dello-spazio/675-equazioni-cartesiane-della-retta-nello-spazio.html