arrange points (representing a boundary of an enclosed area) to clockwise/anti-clockwise sequence

10 Ansichten (letzte 30 Tage)
Hi! I have an array of points constituting the boundary of an enclosed area. The sequence of the points are messed up during the processing. How can I arrange these points in a nice order so that they run in an anti-clockwise/clockwise manner? Is there a function to do this? Thanks in advance.
The area is concave and the points are next to each other.

Antworten (1)

Image Analyst
Image Analyst am 15 Jan. 2015
Find the center by taking the average of the x and y coordinates
xCenter = mean(x);
yCenter = mean(y);
then calculate the angles from the center
angles = atand2d((y-yCenter) ./ (x-xCenter));
Then sort
[sortedAngles, sortIndexes] = sort(angles);
x = x(sortedIndexes); % Reorder x and y with the new sort order.
y = y(sortedIndexes);
This is untested, just off the top of my head, so you may have to tweak it a bit. Let me know how it works.

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by