Пусть $x,$y
и $p,$q
быть заданные координаты А и В, кроме того, называют $d
известное расстояние между точками А и С и $d0
известное расстояние между точками А и В. Делая небольшую математику вы получите следующие формулы (I здесь «м непосредственно его реализация в РНР):
$m = $x + ($q - $y) * $d/$d0;
$n = $y - ($p - $x) * $d/$d0;
Существует также второй раствор:
$m = $x - ($q - $y) * $d/$d0;
$n = $y + ($p - $x) * $d/$d0;
РЕДАКТИРОВАТЬ: Вот как я получил уравнения: я повернул вектор AB, который имеет координаты ($p - $x, $q - $y)
, на 90 градусов, чтобы получить ($q - $y, -($p - $x))
и (-($q - $y), $p - $x)
(в зависимости от того, по часовой стрелке или против часовой стрелки), а затем получил вектор AC, масштабируя его с помощью $d/$d0
(отношение их длин). Теперь я просто перевел вектор на ($x, $y)
, чтобы получить ($m, $n)
.
Возможно, это может быть реализовано более элегантно, используя векторный класс в PHP или даже целую библиотеку, но я думаю, что для этого простого вычисления гораздо проще реализовать его «вручную».
Есть две возможности для точки C, которую вы хотите получить? –
Мне нужно найти обе возможности. –
ОК, я написал оба варианта в своем ответе. –