1

我们有两个点(两个圆的中心),它们的半径以米为单位,这些半径构成了圆。我们需要找到交点。例如,我们有 lat1 = 55.685025, lng1 = 21.118995, r1 = 150 和 lat2 = 55.682393, lng2 = 21.121387, r2 = 250。您可以在下面找到我们当前的公式:

// Find a and h.
$a = ($circle_1_r * $circle_1_r - $circle_2_r * $circle_2_r + $distance * $distance) / (2 * $distance);
$h = sqrt($circle_1_r * $circle_1_r - $a * $a);

// Find P2.
$circle_3_x = $circle_1_x + $a * ($circle_2_x - $circle_1_x) / $distance;
$circle_3_y = $circle_1_y + $a * ($circle_2_y - $circle_1_y) / $distance;

// Get the points P3.
$intersection_1 = $this->newLatLngPoint(
    ($circle_3_x + $h * ($circle_2_y - $circle_1_y) / $distance),
    ($circle_3_y - $h * ($circle_2_x - $circle_1_x) / $distance)
);

$intersection_2 = $this->newLatLngPoint(
    ($circle_3_x - $h * ($circle_2_y - $circle_1_y) / $distance),
    ($circle_3_y + $h * ($circle_2_x - $circle_1_x) / $distance)
);

我们找到了这样的交叉点(黄色标记),但是这些位置在现实世界中并不匹配。

在此处输入图像描述

有人可以帮忙找出问题出在哪里以及如何解决吗?

PS 海拔高度(高于平均海平面的高度)会影响最终结果吗?我不使用它,但可能应该?

4

0 回答 0