Php 三角形中第三点的坐标

Php 三角形中第三点的坐标,php,geometry,cartesian-coordinates,Php,Geometry,Cartesian Coordinates,鉴于: 我们必须找到: C(a3,b3) 我有两个点A(x,y)和B(p,q)的坐标,但我想找到第三个点C(m,n)的坐标。 我知道A和B,A和C之间的距离,A和C之间的角度是90度

鉴于:

我们必须找到:
C(a3,b3)

我有两个点A(x,y)和B(p,q)的坐标,但我想找到第三个点C(m,n)的坐标。

我知道A和B,A和C之间的距离,A和C之间的角度是90度<我知道这是一个简单的毕达哥拉斯定理。但是我如何在php中实现它,公式是什么?

$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;
编辑:下面是我如何得到方程的:我将坐标为
($p-$x,$q-$y)
的向量AB旋转90度,得到
($q-$y,-($p-$x))
($q-$y),$p-$x)
(取决于顺时针还是逆时针)然后用
$d/$d0
(它们的长度之比)缩放得到向量AC。现在我只是用
($x,$y)
转换向量,得到
($m,$n)


也许在PHP中使用vector类甚至整个库可以更优雅地实现这一点,但我认为对于这个简单的计算,“手工”实现它要容易得多.

C点有两种可能性,你想得到哪一种?我必须找到这两种可能性。好的,我在我的答案中公布了这两种可能性。非常感谢。但是你能告诉我你使用了哪一个公式吗?哪一个方程或定理。对未来会有帮助。我没有使用毕达哥拉斯定理或任何其他方程。相反d、 我只是简单地将向量AB旋转90度(第一种可能是顺时针方向,第二种可能是逆时针方向),然后按
$d/$d0
缩放它以获得正确的长度。
$m = $x + ($q - $y) * $d / $d0;
$n = $y - ($p - $x) * $d / $d0;
$m = $x - ($q - $y) * $d / $d0;
$n = $y + ($p - $x) * $d / $d0;