保持矩形的角准确
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
我正在努力使矩形的角保持准确,如下所示。给定一个没有指定顺序的 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