2

我有 4 个节点是四边形的顶点。

我需要顺时针或顺时针对这些顶点进行排序。在 MATLAB 中,我只知道函数 ispolycw

这不起作用,当它不是顺时针排序时,此函数返回 1。

有没有人知道我可以对这些顶点进行排序的函数(或任何建议)?

我很感谢你的帮助。

谢谢。

4

1 回答 1

4

我创建了一个函数来执行此操作。我没有方便的代码,但基本方法是这样的:

  1. 找到点的重心 C
  2. 找到从 C 到每个点的方向
  3. 将方向作为从 0 到 2*pi 的角度
  4. 种类

因此,如果点是 P(4, 2):

C = sum(P) / size(P, 1);
dv = bsxfun(@minus, P, C);
a = atan2(dv(:,2), dv(:,1)) + pi;
[s si] = sort(a);
sortedVertices = P(si, :);

我现在无法对此进行测试,但我认为这是正确的(或接近)。

于 2013-11-01T05:50:58.427 回答