Cutting area plot matlab

27 views (last 30 days)
Jerry
Jerry on 12 Apr 2020
Commented: Rena Berman on 12 Oct 2020
I have a given 3D surface plot My problem is drawing an area, f and cutting out exactly this area from the given plot.Please help!
  3 Comments
Jerry
Jerry on 13 Apr 2020
i have a random 3d surface plot like in the picture, and programmed a triangle into the plot.
how do I substract exactly this shape of the triangle(in pink) from my given plot, so that there is a triangle area of the plot cut out?
Rena Berman
Rena Berman on 12 Oct 2020
(Answers Dev) Restored edit

Sign in to comment.

Accepted Answer

darova
darova on 13 Apr 2020
What about this?
clc,clear
% generate surface
r = 0:0.1:5;
t = linspace(0,2*pi,30);
[T,R] = meshgrid(t,r);
Z = 5*sin(R)./R;
[X,Y] = pol2cart(T,R);
% data for cutting
x = [1 3 0.7];
y = [0.2 0.3 3];
z = [1 1.2 1];
ix = convhull(X(:),Y(:)); % boundary of surface
x1 = X(ix(1:end-2)); % vertices of boundary
y1 = Y(ix(1:end-2));
gd1 = [2; length(x1); x1(:); y1(:)]; % surface boundary geometry
gd2 = gd1;
gd2(1:2+2*length(x)) = [2; length(x); x(:); y(:)]; % cutting plane boundary geometry
dl = decsg([gd1 gd2],'P1-P2',char('P1','P2')'); % decomposite geometry
[p,e,t] = initmesh(dl,'hmax',0.5); % create mesh
F = scatteredInterpolant(X(:),Y(:),Z(:));
zz = F(p(1,:),p(2,:)); % calculate Z coordinate for each mesh point
fv.vertices = [p;zz]'; % x y z data
fv.faces = t(1:3,:)'; % connection list of faces
cla
patch(fv,'facecolor','r') % surface
patch(x,y,z,'g') % cutting plane
view(150,45)
axis vis3d
If you have boundary intstead of convhull
ix = convhull(X(:),Y(:)); % boundary of surface
  9 Comments
darova
darova on 16 Apr 2020
I choosed XZ plane to detect if points inside triangle (i used inpolygon)
Since there are another vertices inside i added Y axis condition:
where y1 - triangle verices, y2 - surface vertices
Result
Was not that easy! See attached script
Jerry
Jerry on 17 Apr 2020
thank you so much! it is perfec!!!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!