2013-04-04 2 views
0

Дано:Координирует 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 точек А (х, у) и В (p, q), но нужно найти координаты третьей точки C (m, n).
Я знаю расстояние между A и B, A и C и угол между A и C, который составляет 90 градусов.
Я знаю, что это простая теорема Пифагора. Но как его реализовать в php и какова будет формула?

+0

Есть две возможности для точки C, которую вы хотите получить? –

+0

Мне нужно найти обе возможности. –

+0

ОК, я написал оба варианта в своем ответе. –

ответ

1

Пусть $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 или даже целую библиотеку, но я думаю, что для этого простого вычисления гораздо проще реализовать его «вручную».

Смежные вопросы