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

4

1 回答 1

1

设为 A$x,$y$p,$qB 的给定坐标,进一步调用$dA 和 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;

编辑:这是我得到方程的方法:我将具有坐标 的向量 AB 旋转($p - $x, $q - $y)90 度以获得($q - $y, -($p - $x))(-($q - $y), $p - $x)(取决于顺时针还是逆时针),然后通过缩放向量 AC $d / $d0(比例为它们的长度)。现在我只是将向量转换($x, $y)为 get ($m, $n)

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

于 2013-04-04T11:07:37.230 回答