Locate two neighboring nodes in space so as to divide the matrix into two
3 次查看(过去 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!