Обеспечение точности углов прямоугольника - PullRequest
0 голосов
/ 18 марта 2020

Я стараюсь, чтобы углы прямоугольника были точными, как показано ниже. Учитывая список из 4 пунктов в не указанном порядке, как бы я go рассказал о сортировке этого списка в Java? У меня нет доступа к нарисованному объекту фигуры, но у меня есть центральная точка.

Точка, имеющая свойства X и Y, и первый индекс отсортированного списка - A, а последний индекс - D. diagram

Я пробовал это, но при повороте список выходит из строя.

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;
                    }
                }

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Я понял это. Я просто буду использовать квадранты прямоугольника. Исходя из угла, А составляет 270-360, В 0-90, C 90-180, D 180-270

enter image description here

0 голосов
/ 18 марта 2020

Вы не можете сделать это. Если вы поворачиваете этот радиан PI-прямоугольника, все углы будут иметь одинаковые значения координат, но фактический обозначенный угол будет другим.

Почему бы не создать класс

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

class LabeledPoint extends Point {
   int id;
}

Если каждый прямоугольник состоит из LabeledPoint, и вы поворачиваете эту точку вместе с другими точками, затем вы можете отсортировать список угловых точек, используя идентификатор.

...