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