2
我在MATLAB中有一个2D笛卡尔点的数组,我想对它们进行排序,以便将它们放入plot
将创建一个没有线重叠的多边形。MATLAB通过自定义条件排序
(NB。我不是真的要在MATLAB中绘制,我只需要他们以这种方式进行排序)
我想编写一个循环的,将发现的极坐标系的“THETA”对于一个从我知道的多边形内的新点到多边形点中的每个点的矢量,然后根据该值进行排序,但它看起来非常冒险和低效!
任何提示?
我在MATLAB中有一个2D笛卡尔点的数组,我想对它们进行排序,以便将它们放入plot
将创建一个没有线重叠的多边形。MATLAB通过自定义条件排序
(NB。我不是真的要在MATLAB中绘制,我只需要他们以这种方式进行排序)
我想编写一个循环的,将发现的极坐标系的“THETA”对于一个从我知道的多边形内的新点到多边形点中的每个点的矢量,然后根据该值进行排序,但它看起来非常冒险和低效!
任何提示?
我认为你的想法就好。
这将使简单而优雅的解决方案
对于中心找到一点,你可以用“avarege”
len=length(points(:,1));
p(1)=sum(points(:,1))/len;
p(2)=sum(points(:,2))/len;
angle=atan2(points(:,2)-p(2),points(:,1)-p(1));
[angle_sorted,perm]=sort(angle);
p_sorted=points
p_sotred(:,1)=points(perm,1);
p_sotred(:,2)=points(perm,2);
没有检查,但它应该是好的。
复杂性是n * log(n)因为排序。
那里有几个拼写错误 - 但建议非常好!它的工作原理 - 谢谢! – 2009-11-22 01:59:15
有很多不同的解决方案。 – 2009-11-22 01:15:09