Для алгоритмов, включающих координаты объекта в декартовой системе координат (например, координаты ограниченного интервала в одномерной декартовой системе координат), каковы преимущества или недостатки их выражения в координатах независимо * от ориентации оси (например, x_min
и x_max
), против в координатах зависит ** от ориентации оси (например, x_left
и x_right
или, альтернативно, x_left
и width
)?
Например, для алгоритма, который проверяет, перекрываются ли два ограниченных интервала, вы бы написали
def test_overlap(x_min_1, x_max_1, x_min_2, x_max_2):
"""Test if two bounded intervals overlap.
Coordinates are independent from axis orientation.
"""
assert x_min_1 <= x_max_1
assert x_min_2 <= x_max_2
return x_min_1 <= x_max_2 and x_min_2 <= x_max_1
или либо
def test_overlap(x_left_1, x_right_1, x_left_2, x_right_2):
"""Test if two bounded intervals overlap.
Coordinates are dependent on axis orientation.
"""
assert (x_left_1 <= x_right_1 and x_left_2 <= x_right_2
or x_left_1 >= x_right_1 and x_left_2 >= x_right_2)
if x_left_1 <= x_right_1: # x-axis oriented to the right
return x_left_1 <= x_right_2 and x_left_2 <= x_right_1
else: # x-axis oriented to the left
return x_left_1 >= x_right_2 and x_left_2 >= x_right_1
или
# Here the orientation of the x-axis cannot be deduced from the arguments,
# so you need to pass it explicitly to the algorithm.
def test_overlap(x_left_1, width_1, x_left_2, width_2, x_orientation):
"""Test if two bounded intervals overlap.
Coordinates are dependent on axis orientation.
"""
assert width_1 >= 0
assert width_2 >= 0
assert x_orientation in ["right", "left"]
if x_orientation == "right": # x-axis oriented to the right
x_right_1 = x_left_1 + width_1
x_right_2 = x_left_2 + width_2
return x_left_1 <= x_right_2 and x_left_2 <= x_right_1
else: # x-axis oriented to the left
x_right_1 = x_left_1 - width_1
x_right_2 = x_left_2 - width_2
return x_left_1 >= x_right_2 and x_left_2 >= x_right_1
* Координаты указывают конкретную точку и зависят от системы координат.Когда я говорю «координаты, не зависящие от ориентации оси», это означает, что рассматриваемая точка изменяется, чтобы оставить координаты неизменными при изменении ориентации оси.
** КогдаЯ говорю «координаты, зависящие от ориентации оси», это означает, что координаты изменяются, чтобы оставить рассматриваемую точку неизменной при изменении ориентации оси.Это стандартное использование.