while (read_from_file(&newzip, &newlat, &newlon)) {
mydist = great_circle_distance(newlat,newlon,origlat,origlon);
if (mydist < 25)
{
// do stuff to add it to file
}
if (mydist < 50)
{
...
}
...
}
####
float dist1cosine = cos(25.0 / EARTH_RADIUS);
float dist2cosine = cos(50.0 / EARTH_RADIUS);
float dist3cosine = cos(75.0 / EARTH_RADIUS);
while (read_from_file(&newzip, &newlat, &newlon)) {
mydistcos = great_circle_distance_cosine(newlat,newlon,
origlat,origlon);
if (mydistcos >= dist1cosine)
{
// do stuff to add it to file
}
if (mydistcos >= dist2cosine)
{
...
}
...
}
##
##
static inline float great_circle_distance_cosine(float lat1,
float long1,
float lat2,
float long2) {
float delta_long, temp1, temp2, delta_lat;
delta_lat = lat2 - lat1;
delta_long = long2 - long1;
temp1 = sin(lat1) * sin(lat2);
temp2 = cos(delta_lat);
temp2 -= temp1;
temp2 *= cos(delta_long);
/* result is cos(lat1) cos(lat2) [ cos(lon1 - lon2) ] +
sin(lat1) sin(lat2) */
return (temp1 + temp2);
}