Equazione cartesiana del piano

L'equazione cartesiana di un piano nello spazio tridimensionale (detta equazione canonica di un piano) è un'equazione di primo grado in tre incognite:

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

dove \(a,b,c,d \in \mathbb{R}\) e \(a,b,c\) non contemporaneamente nulli.

Dalla Geometrica Euclidea risulta che per tre punti non allineati passa uno e un solo piano, dunque fissato \(RC(O,i,j,k)\) (sist. rif. cart. ortonormale, ma vale anche per quello affine) si considerano i 3 punti appartenenti a \(\pi\): \(P_0(x_0,y_0,z_0), P_1(x_1,y_1,z_1),P_2(x_2,y_2,z_2)\), non essendo allineati segue che in ogni coppia scelta sono linearmente indipendenti. Un generico punto \(P(x,y,z)\) appartiene al piano \(\pi\) se \(\overrightarrow{P_0P},\overrightarrow{P_0P_1},\overrightarrow{P_0P_2}\) sono complanari, ossia sono linearmente indipendenti. Per verificarne l'indipendenza lineare si procede a metterli in combinazione lineare ponendo gli scalari \(\ne 0\) per poi svilupparne la determinante, dal quale si ricava l'equazione cartesiana di un piano nello spazio tridimensionale vista sopra.

L'equazione cartesiana del piano è unica a meno di un fattore di proporzionalità (es. \(2ax+2by+2cz+2d=0\)).

Forme particolari dell'equazione di un piano

Piano per l'origine

Se \(d=0\) l'equazione è soddisfatta solo dalla terna \((0,0,0)\), quindi il piano passa per l'origine:

\(ax+by+cz=0\)

Piano parallelo ad un asse coordinato

Se uno dei coefficienti delle incognite è nullo, il piano è parallelo all'asse coordinato corrispondente all'incognita nulla; se \(d=0\) il piano passa per quell'asse coordinato. Es. \(ax+by+d=0\) è un piano parallelo all'asse \(z\), mentre \(ax+by=0\) è un piano che passa per l'asse \(z\).

Piano parallelo ad un piano coordinato

Due incognite sono nulle, per tanto il piano è parallelo al piano riferito alle incognite nulle, se il termine noto \(d=0\) vi è una corrispondenza con tale piano. Es. \(ax+d=0\) è parallelo a \([yz]\), mentre \(ax=0\) è il piano \([yz]\).

Determinare l'equazione cartesiana del piano

Da un vettore ortogonale e un punto

In un sistema di riferimento \(RC(O,{\textbf i},{\textbf j},{\textbf k})\) vengono assegnati un vettore ortogonale al piano \(v=li+mj+nk\) e un punto \(P_0(x_0,y_0,z_0)\).

  • considerare la generica equazione cartesiana di un piano e sostituire i coefficienti con le componenti del vettore \({\textbf v}\): \(lx+my+nz+d=0\)
  • imporre il passaggio per il punto \(P_0\) sostituendo le coordinate: \(lx_0+my_0+nz_0+d=0\)
  • ricavando \(d\) (\(d=-lx_0-my_0-nz_0\)) e sostituendolo nell'equazione si ottiene:

\(lx+my+nz-lx_0-my_0-nz_0 = 0\)

Da due vettori e un punto

In un sistema di riferimento \(RC(O,{\textbf i},{\textbf j},{\textbf k})\) vengono assegnati un punto \(P_0(x_0,y_0,z_0)\) e due vettori linearmente indipendenti \(v=l_vi+m_vj+n_vk\) e \(w=l_wi+l_wj+n_wk\).

  • Trovare un vettore ortogonale al piano tramite il prodotto scalare \({\textbf v} \times {\textbf w}\)

    \($v \times w = det\begin{bmatrix}i&j&k\\l_v&m_v&n_v\\l_w&m_w&n_w\end{bmatrix}\)$

  • Ora si ha un vettore ortogonale e un punto, per tanto eseguire quanto fatto nel paragrafo precedente ("Da un vettore ortogonale e un punto").

TODO: fare esempio e funzione riassumibile in Python con verifica indipendenza lineare

Da tre punti

Deriva dalla dimostrazione dell'equazione cartesiana che l'equazione si ricava imponendo (dati \(P_0(x_0,y_0,z_0),P_1(x_1,y_1,z_1),P_2(x_2,y_2,z_2)\):

\(det\begin{bmatrix}x-x_0&y-y_0&z-z_0\\x_1-x_0&y_1-y_0&z_1-z_0\\x_2-x_0&y_2-y_0&z_2-z_0\end{bmatrix} = 0\)

Funzione riassumibile

import sympy as sp

def equazioneCartesianaPiano(P_0: sp.Matrix, vettore_ortogonale: sp.Matrix = None, v: sp.Matrix = None, w: sp.Matrix = None, P_1: sp.Matrix = None, P_2: sp.Matrix = None):
    a,b,c,d,x,y,z = sp.symbols("a b c d x y z")

    def equazioneCartesianaDaPuntoDirezione(p0: sp.Matrix, direz: sp.Matrix):
        equazione = a*x + b*y + c*z + d
        equazione = equazione.subs(a, direz[0,0]).subs(b, direz[0,1]).subs(c, direz[0,2])
        d_val = - (equazione.subs(x, p0[0,0]).subs(y, p0[0,1]).subs(z, p0[0,2]) - d)
        equazione = equazione.subs(d, d_val)
        return equazione

    if vettore_ortogonale is not None:
        return equazioneCartesianaDaPuntoDirezione(P_0, vettore_ortogonale)
    elif v is not None and w is not None:
        vettore_direzione = v.cross(w)
        return equazioneCartesianaDaPuntoDirezione(P_0, vettore_direzione)
    elif P_1 is not None and P_2 is not None:
        mat = sp.Matrix([
                [x - P_0[0,0], y - P_0[0,1], z - P_0[0,2]],
                [P_1[0,0] - P_0[0,0], P_1[0,1] - P_0[0,1], P_1[0,2] - P_0[0,2]],
                [P_2[0,0] - P_0[0,0], P_2[0,1] - P_0[0,1], P_2[0,2] - P_0[0,2]]
            ])
        return mat.det()
    else:
        raise Exception("Fornire il vettore ortogonale, o 2 vettori linearmente indipendenti o 3 punti")
import sympy as sp
import numpy as np
from typing import List, Callable
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from ipynb.fs.full.common_functions import plotPlane

P_0 = sp.Matrix([[1,0,2]])
P_1 = sp.Matrix([[0,1,3]])
P_2 = sp.Matrix([[2,-1,0]])

result = equazioneCartesianaPiano(P_0, P_1=P_1, P_2=P_2)
plotPlane(result)
result

png

\(\displaystyle - x - y + 1\)