2
我有4个节点是四边形的顶点。如何将无序点排序为按时间排序的顺序列表?
我需要顺时针或顺时针排列这些顶点。在MATLAB我知道,只是功能ispolycw
不起作用真实的,当它不顺时针此功能排序返回1
是否有任何人谁知道一个函数(或任何建议),我可以将这些顶点排序?
我很感谢您的帮助。
谢谢。
我有4个节点是四边形的顶点。如何将无序点排序为按时间排序的顺序列表?
我需要顺时针或顺时针排列这些顶点。在MATLAB我知道,只是功能ispolycw
不起作用真实的,当它不顺时针此功能排序返回1
是否有任何人谁知道一个函数(或任何建议),我可以将这些顶点排序?
我很感谢您的帮助。
谢谢。
我创建了一个函数来做到这一次。我没有代码得心应手,但基本的做法是这样的:
因此,如果点是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, :);
我现在不能测试这个,但我认为这是正确的(或关闭)。
太棒了!我认为atan2(dv(2,:),dv(1,:))应该是atan2(dv(:,2),dv(:,1))'。以防万一你不知道,你可以[在线编译](http://www.compileonline.com/execute_matlab_online.php),当你无法访问matlab。 – jkshah
对不起,我检查它,但它只返回第一和第二行P. – Rosa
@Rosa试试我的编辑。它为我工作。这只是弗洛里斯无法测试它,索引顺序不正确。 – jkshah