Sort coordinates based on closest connectivity?
11 次查看(过去 30 天)
显示 更早的评论
Hello,
I have an nx3 array representing x,y,z coordinates in space. These coordinates are all connected and represent a tortuous line. I would like to calculate the length of this line, however the coordinates I have are not in order of connectivity. Is it possible to reorder them such that I can simply calculate the length by doing a for loop like:
length = 0;
for i = 1:length(array)-1
length = norm([coords(i,1)-coords(i+1,1),coords(i,2)-coords(i+1,2),coords(i,3)-coords(i+1,3)]);
end
I have tried just finding the neighbours of each coordinate and reordering that way, but this gets very convoluted quickly and requires that I "walk" through the line. For the total dataset I am trying to analyze I will literally have millions of these lines, so I am trying to avoid slow solutions like that.
Edit: The lines I'm working with are in an image, and the points on the line must have a max distance from each consecutive point of (1,1,1). That is, 1 pixel in x,y, and z.
0 个评论
采纳的回答
Image Analyst
2018-2-20
7 个评论
Image Analyst
2018-8-28
I don't see any rationale for how you're connecting the points in the figure
in that order, [1-2-3-4-1-3-6-7]. How is that order decided? If it's just arbitrary, then you can still do
outputArray = inputArray(Order);
with whatever order you want.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!