Locate two neighboring nodes in space so as to divide the matrix into two
조회 수: 1 (최근 30일)
이전 댓글 표시
I have the coordinates of nodes arranged in space in the shape of 8.
Is there a way to locate the nearest points as marked in the two figures (circled in red)? note: the figures are an example
I need to locate the two nodes to "separate" the coordinates of the nodes in matrix A and matrix B.
plane_new = importdata("plane_new_2_30_jj2.mat");
% OR
plane_new = importdata("plane_new_3_31_jj2.mat");
figure
plot3(plane_new(:,1),plane_new(:,2),plane_new(:,3),'k.','Markersize',20);
axis equal
grid off
댓글 수: 3
채택된 답변
Matt J
2024년 2월 24일
편집: Matt J
2024년 2월 24일
load xydata xy %Original 3D data mapped to 2D
xy=xy(tspsearch(xy,5),:); %tspsearch is on the file exchange
P=polyshape(xy,'Simplify',0);
pc=regions(rmslivers(subtract( convhull(P) , P),1/100));
[~,is]=maxk(area(pc),2); pc=pc(is);
neck=getNearest(pc(1),pc(2)); %The two points
plot(P); axis equal
hold on
scatter(neck(:,1), neck(:,2),'or','filled')
hold off
function V=getNearest(p1,p2)
ID=nearestvertex(p1,p2.Vertices);
Dist=vecnorm(p1.Vertices(ID,:)-p2.Vertices,2,2);
[~,j]=min(Dist);
V=[p1.Vertices(ID(j),:);p2.Vertices(j,:)];
end
댓글 수: 2
Walter Roberson
2024년 2월 24일
regionprops() MinFeretProperties is another potential way to find the distances.
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!