Cutting area plot matlab
조회 수: 18 (최근 30일)
이전 댓글 표시
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
채택된 답변
darova
2020년 4월 13일
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
ix = convhull(X(:),Y(:)); % boundary of surface
댓글 수: 9
darova
2020년 4월 16일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!