Python: элегантный способ создания интервала из значения и разрыва - PullRequest
0 голосов
/ 17 марта 2020

Мой вопрос возник из-за необходимости преобразовать координату блока (x, y, width, height) в представление (xmin, ymin, xmax, ymax).

Первый простой рабочий код:

w1 = w // 2
w2 = w - w1  # keep integer coordinates without losing pixel for odd width

h1 = h // 2
h2 = h - h1

x1 = x - w1
y1 = y - h1

x2 = x + w2
y2 = x + h2

Но мне не нравится этот код спагетти.

Можно заменить вычисления w1, w2 и h1, h2 чем-то вроде (или лучше), чем python встроенный оператор divmod:

w1, w2 = divmod(w, 2)
h1, h2 = divmod(h, 2)
w2 += w1
h2 += h1

но для этого все еще требуется вторая операция для w2, h2.

Итак, мой первый вопрос: существует ли лучший оператор?

w1, w2 = divsplit(w, 2)

Есть ли более разумный способ вычислить интервал для x1, x2 и y1, y2?

x1, x2 = interval(x, w)

или

x1, x2 = interval(x, w1, w2)

Спасибо

...