首页 > 解决方案 > 保持矩形的角准确

问题描述

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

A Point 具有 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;
                    }
                }

标签: javalistsortingrect

解决方案


你不能这样做。如果旋转该矩形 PI 弧度,所有角将具有相同的坐标值,但实际标记的角会不同。

为什么不创建一个类

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

class LabeledPoint extends Point {
   int id;
}

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


推荐阅读