Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保持矩形的角点精确_Java_List_Sorting_Rect - Fatal编程技术网

Java 保持矩形的角点精确

Java 保持矩形的角点精确,java,list,sorting,rect,Java,List,Sorting,Rect,我试图保持矩形的角点精确,如下所示。给定一个没有指定顺序的4点列表,我将如何在Java中对该列表进行排序?我无法访问绘制的形状对象,但我有中心点。 具有X和Y属性的点,排序列表的第一个索引为A,最后一个索引为D。 我已经试过了,但是当轮换的时候,列表就出了问题 Collections.sort(corners, new Comparator<GeoPoint>() { @Override public int comp

我试图保持矩形的角点精确,如下所示。给定一个没有指定顺序的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;
                    }
                }
Collections.sort(角点、新比较器(){
@凌驾
公共整数比较(点o1,点o2){
if(o1.getLongitude()
你不能这样做。如果你旋转矩形PI弧度,所有的角点都会有相同的坐标值,但实际标记的角点会不同

为什么不创建一个类呢

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

class LabeledPoint extends Point {
   int id;
}

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

我计算出来了。我将只使用矩形的象限。基于角度,a是270-360,B是0-90,C是90-180,D是180-270


我明白你的意思,但我无法做到这一点,因为我只能得到积分列表。我真的不在乎它是否是同一个角,我只在乎角是否以这种方式排列。有时,我用我的代码,列表会出现混乱。例如,它不是ABCD,而是BACD。我只需要c的这种排列orners。旋转点列表不会改变它们的顺序。因此,如果在位置a、B、C、D中指定它们,则列表仍会将这些更改的点保持在同一索引中。