Locate two neighboring nodes in space so as to divide the matrix into two
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alberto Acri
el 24 de Feb. de 2024
Comentada: Matt J
el 24 de Feb. de 2024
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 comentarios
Respuesta aceptada
Matt J
el 24 de Feb. de 2024
Editada: Matt J
el 24 de Feb. de 2024
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 comentarios
Walter Roberson
el 24 de Feb. de 2024
regionprops() MinFeretProperties is another potential way to find the distances.
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!