Skip to content

Conversation

@pdtyreus
Copy link

@pdtyreus pdtyreus commented Aug 7, 2015

I found some issues with this implementation while testing. You can reproduce by holding the longitude constant and varying the latitude. The formula in the current implementation always returns 0 for the distance.

        float refLat = 24.396308f;
        float refLng = -124.848974f;

        ZFHaversine *haversine = [[ZFHaversine alloc] initWithLatitude1:refLat longitude1:refLng latitude2:38.896376f longitude2:refLng];
        float yKm = [haversine kilos];

        haversine = [[ZFHaversine alloc] initWithLatitude1:refLat longitude1:refLng latitude2:refLat longitude2:-77.328688f];
        float xKm = [haversine kilos];

        haversine = [[ZFHaversine alloc] initWithLatitude1:refLat longitude1:refLng latitude2:38.896376f longitude2:-77.328688f];
        float km = [haversine kilos];

        NSLog(@"translate %f %f %f",yKm,xKm,km);

I updated the formula based on the wikipedia version https://en.wikipedia.org/wiki/Haversine_formula.

I assume since this has been untouched for a couple years the implementation provided is working fine for your use. But I figured I would offer to contribute back since I found the code handy.

P. Daniel Tyreus added 2 commits August 7, 2015 14:50
I found some issues with this implementation while testing. You can reproduce by holding the longitude constant and varying the latitude. The formula in the current implementation always returns 0 for the distance.

```objective-c
        float refLat = 24.396308f;
        float refLng = -124.848974f;
        
        ZFHaversine *haversine = [[ZFHaversine alloc] initWithLatitude1:refLat longitude1:refLng latitude2:38.896376f longitude2:refLng];
        float yKm = [haversine kilos];
        
        haversine = [[ZFHaversine alloc] initWithLatitude1:refLat longitude1:refLng latitude2:refLat longitude2:-77.328688f];
        float xKm = [haversine kilos];
        
        haversine = [[ZFHaversine alloc] initWithLatitude1:refLat longitude1:refLng latitude2:38.896376f longitude2:-77.328688f];
        float km = [haversine kilos];
        
        NSLog(@"translate %f %f %f",yKm,xKm,km);
```

I updated the formula based on the wikipedia version https://en.wikipedia.org/wiki/Haversine_formula.

I assume since this has been untouched for a couple years the implementation provided is working fine for your use. But I figured I would offer to contribute back since I found the code handy.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant