【问题标题】:Maintain a list of points around a center point, preserving CCW order维护中心点周围的点列表,保持 CCW 顺序
【发布时间】:2012-02-17 23:04:52
【问题描述】:

我有以下课程:

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

并且我想支持向neighborList 添加/删除顶点,以便点在该顶点周围按逆时针顺序列出(列表中的第一个点无关紧要)。如果点是共线的,则应该首先靠近点。我尝试了几种方法,但到目前为止,我总能找到一个不适用于给定方法的反例。

有没有人知道如何以简单有效的方式做到这一点?

【问题讨论】:

    标签: geometry computational-geometry


    【解决方案1】:

    用极坐标形式表示点坐标

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

    并在角度和半径上使用字典顺序。

    【讨论】:

    • 另外,由于我们只是比较距离,我们可以在不做 sqrt 的情况下离开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多