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 comentarios

darova
darova el 12 de Abr. de 2020
Show your data. Show your code. Open yourself up for us!
Jerry
Jerry el 13 de Abr. de 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 el 12 de Oct. de 2020
(Answers Dev) Restored edit

Iniciar sesión para comentar.

 Respuesta aceptada

darova
darova el 13 de Abr. de 2020

1 voto

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 comentarios

Jerry
Jerry el 14 de Abr. de 2020
thank you, but i have had a random surface sent to me and I dont even have the function for the surface. up there I just postet an example. so what do i do if i don't have information according to the given surface, just the geometrical position of all the points in the mesh?
darova
darova el 14 de Abr. de 2020
You don't need mesh. Try only points
Jerry
Jerry el 14 de Abr. de 2020
it doesn't work, maybe it has something to do with the fact that my given plot is an SGplot with a large Vertex and Facet list
darova
darova el 14 de Abr. de 2020
Can you attach the data?
Jerry
Jerry el 16 de Abr. de 2020
please help
darova
darova el 16 de Abr. de 2020
Can you attach the data for the picture?
Jerry
Jerry el 16 de Abr. de 2020
here's the picutre
darova
darova el 16 de Abr. de 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 el 17 de Abr. de 2020
thank you so much! it is perfec!!!

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

el 12 de Abr. de 2020

Comentada:

el 12 de Oct. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by