@KovalevGrigory

Как получить все точки в промежутке координат XY1;XY2?

Как можно получить все точки, находящиеся в промежутке координат?
Если нам известны только координаты двух точек.

К примеру (105, 10) и (-10, 56)

В моей голове всплывает только что-то вроде:
if (x1 < x2) {
            if (z1 < z2) {

                for (int i = x1; i <= x2; i++) {
                    for (int j = z1; j <= z2; j++) {
                        area.add(new Location(i, y, j));
                    }
                }

            } else if (z2 < z1) {

                for (int i = x1; i <= x2; i++) {
                    for (int j = z1; j >= z2; j--) {
                        area.add(new Location(i, y, j));
                    }
                }

            }

        } else if (x2 < x1) {
            if (z1 < z2) {

                for (int i = x1; i >= x2; i--) {
                    for (int j = z1; j <= z2; j++) {
                        area.add(new Location(i, y, j));
                    }
                }

            } else if (z2 < z1) {

                for (int i = x1; i >= x2; i--) {
                    for (int j = z1; j >= z2; j--) {
                        area.add(new Location(i, y, j));
                    }
                }

            }
        }
    }


Подскажите, рациональное ли это решение задачи?
Если ли иные варианты решения проблемы?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Проще "отсортировать" заданные координаты. Если x1 > x2, поменяйте их местами. То же с z1 и z2, А потом остается только первый случай в вашем коде.

Это сильно короче писать и легче читать и понимать. В ваших четырех копипастах очень легко где-то допустить ошибку и очень тяжело ее потом найти.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы