Я пытаюсь увидеть, попадет ли данная пара (широта, лонг) в круговую область.Центр круга известен (широта, длинные значения), а также радиус.Я использовал следующие подходы:
- Рассчитайте расстояние между центром и заданным широтой / долготой, используя формулу Haversines.
Формула:
a = ( sin(delta_lat/2) )^2 + cos (vp_Current.v_Latitude) *
cos(vp_CentreOfCircle.v_Latitude) * ( sin(delta_long/2) )^2;
c = 2 * atan2( sqrt(a), sqrt(1-a) );
d = R * c;
где: R = 6371 Km.
, delta_lat = lat2 - lat1
, delta_long = long2 - long1
- Затем проверьте, меньше ли это расстояние, чем радиус, чтобы увидеть, находится ли оно внутри круга.
Я написал код на C, но когда я ввожу следующие данные, вывод говорит, что точка находится снаружи, а не внутри круга (точка находится внутри, как я проверял на картах Google).
Centre(lat/long) = (19.228177, 72.685547)
Given point = (18.959999, 72.819999)
Radius = 30 miles (about 49 Km but entered as 50 in the program).
Странно то, что если я введу радиус как 5000, результат будет внутри, но даже не для 500. Я не знаю, в чем проблема ... Буду очень признателен, если кто-нибудь сможет поделиться некоторыми указателями ... спасибо.