鉴于:
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 :(得分: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甚至整个库中使用矢量类来更优雅地实现,但我认为通过这个简单的计算,“手动”实现它会容易得多。