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

2 views (last 30 days)
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

Accepted Answer

Matt J
Matt J on 26 Nov 2018
Edited: Matt J on 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 Comments
Arvind Kumar Pathak
Arvind Kumar Pathak on 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 on 26 Nov 2018
Edited: Matt J on 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));

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!