2013-04-04 145 views
0

鉴于:三角形的第三点的坐标

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中实现它,公式是什么?

+0

C点有两种可能性,你想得到哪一种? – 2013-04-04 11:01:17

+0

我必须找到两种可能性。 – 2013-04-04 11:09:23

+0

好吧,我已经在我的答案中发布了两种可能性。 – 2013-04-04 11:09:59

回答

1

$x,$y$p,$q是A和B的给定坐标,进而调用$d A和C $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; 

编辑:这里是我如何得到方程式:我将坐标为($p - $x, $q - $y)的矢量AB旋转90度,以获得($q - $y, -($p - $x))(-($q - $y), $p - $x)(取决于是顺时针还是逆时针),然后通过用$d/$d0(它们的长度的比例)。现在我只是通过($x, $y)翻译了矢量,得到($m, $n)

也许这可以通过在PHP甚至整个库中使用矢量类来更优雅地实现,但我认为对于这种简单的计算来说,“手工”实现起来要容易得多。