Tenemos dos puntos (centros de dos circunferencias) y sus radios en metros, esos radios forman la circunferencia. Necesitamos encontrar los puntos de intersección. Por ejemplo tenemos lat1 = 55.685025, lng1 = 21.118995, r1 = 150 y lat2 = 55.682393, lng2 = 21.121387, r2 = 250. A continuación puedes encontrar nuestra fórmula actual:
// 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)
);
Encontramos esos puntos de intersección (marcadores amarillos), sin embargo esas ubicaciones no coinciden en el mundo real.
¿Alguien puede ayudar a encontrar el problema y cómo solucionarlo?
P.D. ¿Afecta la altitud (altura sobre el nivel medio del mar) al resultado final? Yo no lo utilizo, pero tal vez debería hacerlo.