三角形中第三个点的坐标

时间:2013-04-04 10:53:19

标签: php geometry cartesian-coordinates

鉴于:

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 个答案:

答案 0 :(得分:1)

$x,$y$p,$q成为A和B的给定坐标,再调用$d A和C之间的已知距离,$d0 A和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))和{{1 (取决于顺时针还是逆时针)然后通过用(-($q - $y), $p - $x)(它们的长度比)缩放来获得矢量AC。现在我只是按$d / $d0翻译了向量,以获得($x, $y)

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