2013-05-12 2 views
1

Я пытаюсь найти расстояние между точкой [x1, y1] и ближайшей точкой на окружности с центром в [c1, c2] с радиусом 2? я придумал следующее уравнение для этогоЛогика для вычисления расстояния между точками

sqrt((p[0] - c[0]) ** 2 + (p[1] - c[1]) ** 2) 

Но ответ он возвращает ответ, который, кажется, не так ...

Что я делаю неправильно?

ответ

7

Ваша формула вычисляет расстояние до центр круга. Вычтите радиус и возьмите абсолютное значение.

radius = 2 
abs(sqrt((p[0] - c[0]) ** 2 + (p[1] - c[1]) ** 2) - radius) 

Примечание: Да, это будет работать для точек на или внутри круга.

+0

Большое спасибо @RogerRowland Это помогло !!!! –

+0

Как называется эта формула? – orlybg

+1

@orlybg: Я не знаю ни одного имени. Я создал его из евклидовой метрики расстояния. –

0

Это даст вам расстояние между точкой и центра круга, а не ближайшая точка на окружности

ВИДЕТЬ answer here для алгоритма

0

Вы пытаетесь минимизировать расстояние до точки на окружности, поэтому я бы использовал некоторую оптимизацию исчисления. Решение (x, y) ниже.

f(x, y) = (x - x1)^2 + (y - y1)^2 // the distance formula 

(x - c1)^2 + (y - c2)^2 = 2^2 = 4 // the equation of the circle 
Смежные вопросы