2012-02-17 38 views
0

我有以下類:保持圍繞中心點點的列表,保存CCW爲了

public class Vertex() { 
    private double xCoord; 
    private double yCoord; 
    private ArrayList<Vertex> neighborList(); 
} 

而且我要支持這樣的點在CCW順序列出添加/刪除頂點到neighborList在這個頂點周圍(哪個點在列表中第一個並不重要)。如果點是共線的,則應該先指出這一點。我嘗試了幾種方法,但到目前爲止一直能夠找到一個不適用於給定方法的反例。

有沒有人有一個好主意,如何以簡單和有效的方式做到這一點?

回答

3

快速極地形式

t = atan2(Y-Yo, X-Xo) 
r = sqrt((X-Xo)^2 + (Y-Yo)^2) 

點座標和使用的角度字典序然後半徑。

+0

另外,因爲我們只比較距離,所以不用做sqrt就可以離開。 – ryanm 2012-02-18 04:21:16

+0

謝謝!這顯然是要走的路。 – smessing 2012-02-18 17:20:03