Draw a plane over 3d point cloud and determine the 3d point above or below that plane ?

2 visualizzazioni (ultimi 30 giorni)
Dear sir/ Madam
I have a 3d pont cloud in which let N are the no of points. Every point has X, Y and Z coordinate.
I want to draw a plane over this 3d point cloud which intersects this point cloud.
Next step is to determine the indices of points which are lying below or above that plane.
Please help me.
Thanks

Risposta accettata

Matt J
Matt J il 26 Nov 2018
Modificato: Matt J il 26 Nov 2018
I would start with this,
P=[X(:),Y(:),Z(:)];
p=mean(P,1);
[~,~,V]=svd( P-p,0);
planeNormal=V(:,end);
planeEquation=[planeNormal;-dot(planeNormal,p(:))];
  6 Commenti
Arvind Kumar Pathak
Arvind Kumar Pathak il 26 Nov 2018
Dear sir
Thanks for your help. I am new for matlab environment, but I have tried this one.
But I am not able to understand it completely
P=[radius(:,1),radius(:,2),radius(:,3)];
p=mean(P,1);
% [~,~,V]=svd(P-p,0);
[~,~,V]=svd( bsxfun(@minus,P,p) , 0);
planeNormal=V(:,end);
planeEquation=[planeNormal;-dot(planeNormal,p(:))];
hold on
[xx, yy]=meshgrid(0:0.1:1,0:0.1:1); % Generating a regular grid for plotting
zz = planeEquation(1,1) * xx + planeEquation(2,1) * yy + planeEquation(3,1);
surf(xx,yy,zz) % Plotting the surface
Please guide me
Matt J
Matt J il 26 Nov 2018
Modificato: Matt J il 26 Nov 2018
Thanks for your help. I am new for matlab environment
Hardly. You have been using Matlab for at least a year and a half, according to your posting history.
However, I advise you to start with this change
zz = (planeEquation(1)*xx + planeEquation(2)*yy + planeEquation(4) )./(-planeEquation(3));

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by