保持矩形的角准确

Keeping Corners of a Rectangle accurate

我正在努力使矩形的角保持准确,如下所示。给定一个没有指定顺序的 4 个点的列表,我将如何在 Java 中对这个列表进行排序?我无法访问绘制的形状对象,但我有中心点。

具有 X 和 Y 属性 的点,排序列表的第一个索引是 A,最后一个索引是 D。

我已经试过了,但是旋转列表时会乱序。

Collections.sort(corners, new Comparator<GeoPoint>() {
                @Override
                public int compare(GeoPoint o1, GeoPoint o2) {
                    if (o1.getLongitude() < o2.getLongitude()) {
                        return -1;
                    } else if (o1.getLatitude() < o2.getLatitude()) {
                        return 1;
                    } else {
                        return 0;
                    }
                }

你做不到。如果你旋转那个矩形 PI 弧度,所有的角都会有相同的坐标值,但实际标记的角会不同。

为什么不创建一个 class

class LabeledPoint {
   int id;
   Point point;
} 
// or perhaps

class LabeledPoint extends Point {
   int id;
}

如果每个矩形由一个 LabeledPoint 组成,并且您将那个点与其他点一起旋转,则可以使用 id 对角点列表进行排序。

我明白了。我将只使用角度上 rectangle.Based 的象限,A 为 270-360,B 为 0-90,C 为 90-180,D 为 180-270