我有以下课程:
public class Vertex() {
private double xCoord;
private double yCoord;
private ArrayList<Vertex> neighborList();
}
我想支持向neighborList添加/删除顶点,以便在这个顶点周围以CCW顺序列出这些点(列表中的第一个点无关紧要)。如果点是共线的,那么应该首先接近点。我已经尝试了几种方法,但到目前为止总能找到一个对给定方法不起作用的反例。
有没有人知道如何以简单有效的方式做到这一点?
答案 0 :(得分:3)
以极坐标形式显示点坐标
t = atan2(Y-Yo, X-Xo)
r = sqrt((X-Xo)^2 + (Y-Yo)^2)
并在角度和半径上使用词典排序。