Как найти минимальную разницу смещения координат из списка объектов?
Имеется такой синтетический пример:
import pyautogui
from typing import List, Tuple, Type
from pyrect import Box
def main():
list_locates: List[Tuple[Type[int], Type[int], Type[int], Type[int]]]
test_box: Box
list_locates = [Box(100, 100, 50, 50), Box(120, 120, 50, 50), Box(150, 150, 50, 50), Box(110, 210, 50, 50)]
# Испытуемый объект, со смещением в 1 пиксель, в позиции координат
test_box = Box(101, 100, 50, 50)
if test_box not in list_locates:
# Как найти минимальное расхождение с координатами местоположения элементов Box?
print(True)
if __name__ == '__main__':
main()
Как найти максимальную разницу по одной или двум осям?
Может в наборе базовых библиотек питона есть что то, готовое для решения подобной задачи?
Или в pyautogui
У меня получилось такое решение:
import pyautogui
from typing import List, Tuple, Type
from pyrect import Box
def main():
list_locates: List[Tuple[Type[int], Type[int], Type[int], Type[int]]]
test_box: Box
list_locates = [
Box(100, 100, 50, 50),
Box(120, 120, 50, 50),
Box(150, 150, 50, 50),
Box(110, 210, 50, 50)
]
# Испытуемый объект, со смещением в 1 пиксель, в позиции координат
test_box = Box(101, 100, 50, 50)
if test_box not in list_locates:
threshold: int = 50
list_diff = []
for item in list_locates:
diff = abs(test_box[0] - item[0]), abs(test_box[1] - item[1])
if threshold >= diff[0] and threshold >= diff[1]:
list_diff.append(diff)
print(list_diff)
print(min(list_diff))
print(max(list_diff))
if __name__ == '__main__':
main()
[(1, 0), (19, 20), (49, 50)]
(1, 0)
(49, 50)
P.S. Есть что то, в питоне из встроенного, для решения подобных вопросов?