1

2 つの点 (2 つの円の中心) とそれらの半径 (メートル単位) があり、それらの半径が円を作ります。交点を見つける必要があります。たとえば、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