在MATLAB中对顺时针多边形点进行排序

bri*_*rio 12 sorting matlab geometry polygon

我有2个向量,它们是多边形的8个顶点的x和y坐标

x = [5 5 7 7 9 9 5 7]

y = [8 6 6 8 6 8 10 10]

我想对它们进行排序(顺时针)以获得正确的向量(正确绘制多边形)

x = [5 7 9 9 7 7 5 5]

y = [6 6 6 8 8 10 10 8]

Ben*_*igt 25

第1步:找到顶点的未加权平均值:

cx = mean(x);
cy = mean(y);
Run Code Online (Sandbox Code Playgroud)

第2步:找到角度:

a = atan2(y - cy, x - cx);
Run Code Online (Sandbox Code Playgroud)

第3步:找到正确的排序顺序:

[~, order] = sort(a);
Run Code Online (Sandbox Code Playgroud)

第4步:重新排序坐标:

x = x(order);
y = y(order);
Run Code Online (Sandbox Code Playgroud)