@i__egor

Как найти расстояние между двумя точками быстрее?

Кто знает более производительный способ найти расстояние в двумерном пространстве от точки А до Б. Нужно что-то быстрее чем точное: sqrt((x1-x2)^2 - (у1-у2)^2) и более точное чем самое простое: модуль(х1-х2)+модуль(у1-у2)
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
longclaps
@longclaps
Например так:
x, y = 1.2345, 3.2109
le0 = sqrt(x * x + y * y)
if x < y:
    x, y = y, x
y /= x
le1 = x * (1.0 + y * y * 0.5)
print(le1 / le0) #  1.0023767214085302, неплохо

В худшем случае, когда x == y, ошибка составит +6%.
Только не так уж это быстро.

Есть способ побыстрей/попроще, тут погрешность до +8%
if x < y:
    x, y = y, x
le1 = x + y * 0.41421356237309515 # sqrt(2.0) - 1.0
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А конечная цель метрики какая? Например, для сортировки или проверки нахождения в заданном радиусе можно убрать корень.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы