Координаты 3-й точки в треугольнике
Дано:
Point A (a1,b1)
Point B (a2,b2)
Distance between A and B
Distance between A and C
Angle between AB and AC = 90deg
Должен найти:C(a3,b3)
У меня есть координаты 2 точек A(x,y) и B(p,q), но я хочу найти координаты третьей точки C(m,n).
Я знаю расстояние между A и B, A и C и угол между A и C, который составляет 90 градусов.
Я знаю, что это простая теорема Пифагора. Но как мне реализовать это в php и какой будет формула?
1 ответ
Позволять $x,$y
а также $p,$q
быть заданными координатами A и B, кроме того, позвоните $d
известное расстояние между А и С и $d0
известное расстояние между A и B. Путем небольшой математики вы получите следующие формулы (здесь я непосредственно реализую это в PHP):
$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 или даже целую библиотеку, но я думаю, что для этого простого вычисления гораздо проще реализовать его "вручную".