Вычислить координаты точки с заданными расстояниями до двух других точек

Если у меня есть три точки A, B, C, и я знаю расстояния между ними, и A находится в 2D-координатах {0,0}, а B находится в {ab,0}, то по какой формуле можно найти координаты точки? точка С?


person JustAMartin    schedule 20.03.2011    source источник


Ответы (3)


Точка {cx, cy} должна решать два уравнения:

cx^2+cy^2==ac^2 && (cx-ab)^2+cy^2==bc^2

=> cx^2-(cx-ab)^2==ac^2-bc^2
=> 2*cx*ab==ac^2-bc^2+ab^2

=> cx = (ac^2-bc^2+ab^2)/(2*ab)

=> cy = +/- sqrt(ac^2-cx^2)   iff ac^2-cx^2 > 0
=> cy = 0   iff ac^2-cx^2 = 0
=> no solution    else

Есть либо две точки, каждая из которых имеет желаемое расстояние. Но на основе ac^2-cx^2 также может быть только одно решение или вообще не быть.

person Howard    schedule 20.03.2011

Если вы не накладываете никаких дополнительных ограничений на расстояния, ваш вопрос эквивалентен «как найти пересечение двух кругов»:

http://mathworld.wolfram.com/Circle-CircleIntersection.html

Следовательно, как указал Говард, будет 0, 1 или 2 точки пересечения, удовлетворяющие заданным вами условиям.

person Fivos Vilanakis    schedule 20.03.2011

Вы можете использовать формулу расстояния (в основном теорему Пифагора), чтобы найти расстояние между любыми двумя точками на координатной плоскости.

введите здесь описание изображения

http://www.purplemath.com/modules/distform.htm

person SamB    schedule 20.03.2011