FITELLIPSE3D Fit an ellipse to a set of points. FITTEDELLIPSE3D = fitEllipse3d(POINTS) returns the 3D ellipse fitted to a set of 3D points. Example % Create 2D ellipse n=randi([10,100]); a=randi([30,50]); b=randi([5,25]); [x, y] = ellipseToPolygon([0 0 a b 0 ], n); % 3D and add some noise points = [x, y, zeros(n,1)]; points=points+(-1+2*rand(n,3)); % Create a random transformation center=-100+200*rand(1,3); phi=randi([-180,180]); theta=randi([-180,180]); psi=randi([-180,180]); TFM=eulerAnglesToRotation3d(phi, theta, psi, 'ZYZ'); TFM(1:3,4)=center'; points = transformPoint3d(points, TFM); % Fit ellipse [fE, fTFM] = fitEllipse3d(points, 'vis', true); % Plot reconstructed ellipse [fx, fy] = ellipseToPolygon([0 0 fE(4), fE(5) 0 ], n); fpoints = transformPoint3d([fx, fy, zeros(n,1)], fTFM); drawEllipse3d(fE,'k') See also drawEllipse3d, ellipseToPolygon Source Nested functions are part of the quadfit toolbox by Levente Hunyadi https://mathworks.com/matlabcentral/fileexchange/45356 --------- Author: oqilipo Created: 2017-08-11 Copyright 2017
Package: matgeom