Bonjour,
Prenons un exemple avec les 3 points :
x y z
1 2 3
6 2 2
3 3 3
Mon code pour retrouver les paramètres a b c du plan passant par ces trois points est :
a = (Y2 - Y1)*(Z3 - Z1) - (Z2 - Z1)*(Y3 - Y1)
b = (-1)*((X2 - X1)*(Z3 - Z1) - (Z2 -Z1)*(X3 - X1))
c = (X2 - X1)*(Y3 - Y1) - (Y2 - Y1)*(X3 - X1)
J'obtiens comme valeurs :
a 1
b -2
c 5
Mon code pour ajuster un plan à ces points par moindres carrés est :
% Construction de la matrice M
sxx = sum (power(PointsSegment(:,1),2))
sxy = sum (PointsSegment(:,1).*PointsSegment(:,2))
sx = sum (PointsSegment(:,1))
syy = sum (power(PointsSegment(:,2),2))
sy = sum (PointsSegment(:,2))
n = PO
MatriceM = [sxx sxy sx; sxy syy sy; sx sy n]
% Construction de la matrice V
sxz = sum (PointsSegment(:,1).*PointsSegment(:,3))
syz = sum (PointsSegment(:,2).*PointsSegment(:,3))
sz = sum (PointsSegment(:,3))
MatriceV = [sxz; syz; sz]
% Recherche de la matrice X (a b c)
MatriceX = inv(MatriceM) * MatriceV
a = MatriceX(1,1)
b = MatriceX(2,1)
c = MatriceX(3,1)
NB : j'ai vérifié ce code en faisant les calculs en parallèle sur Excel
J'obtiens comme valeurs :
a -0.2
b 0.4
c 2.4
Comme vous l'avez dit, ce résultat n'est pas normal car je devrais retrouver le plan passant par les trois points...
Je vous remercie d'avance pour l'aide que vous pourrez m'apporter !