Как найти верхнюю левую координату в массиве координат в Java - PullRequest
0 голосов
/ 16 сентября 2018

Я искал по всему интернету и не смог найти реализацию (исходный код) готовой к использованию функции Java (или это может быть любой язык программирования), которая для данного массива пар координат [x, y] возвращаетверхняя левая пара координат.

Желаемое поведение:

String s = getUpperLeftCoordinate([{-4455 , 3814}, {-1633 , 434}, {-1633 , 434}, {-3271 , -3687}, {-4636 , -957}, {-4636 , -957}, {1505 , -4154}, {1505 , -4154}, {1505 , -4154}]);

вернет:

s="{-4455 , 3814}"

enter image description here

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Вот реализация того, что Andy Turner упомянул в своем комментарии.

  private Point calculateTopLeftCornerPoint(Point[] points) {
    Point corner = null;
    Integer d = null;
    for (Point point : points) {
      Integer diff = point.y - point.x;
      if (d == null || (diff) > d) {
        corner = point;
        d = diff;
      }
    }
    return corner;
  }

ПРИМЕЧАНИЕ: этот алгоритм не учитывает возможность двух или более точки, сидящие на линии y-x=d. Я оставлю эту часть для вас, чтобы выяснить.

0 голосов
/ 16 сентября 2018

с использованием java.awt.Point для ООП

Point getUpperLeftCoordinate(Point... points) {
    Point mostUpperLeft = null;
    for (Point point : points) {
        if (mostUpperLeft == null) {
            mostUpperLeft = point;
        } else {
            double diffX = mostUpperLeft.getX() - point.getX();
            double diffY = point.getY() - mostUpperLeft.getY();
            if (diffX + diffY > 0) {
                mostUpperLeft = point;
            }
        }
    }
    return mostUpperLeft;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...