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\)).
Se \(d=0\) l'equazione è soddisfatta solo dalla terna \((0,0,0)\), quindi il piano passa per l'origine:
\(ax+by+cz=0\)
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\).
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]\).
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)\).
\(lx+my+nz-lx_0-my_0-nz_0 = 0\)
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\).
\($v \times w = det\begin{bmatrix}i&j&k\\l_v&m_v&n_v\\l_w&m_w&n_w\end{bmatrix}\)$
TODO: fare esempio e funzione riassumibile in Python con verifica indipendenza lineare
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\)
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
\(\displaystyle - x - y + 1\)