实现测量两GPS坐标之间距离的Haversine公式和球面余弦定律的Objective-C版本。同时,还提供了用于从GPS坐标中查找起始和最终方向的方法。
Haversine公式是航海中的重要方程,它提供了球面上两点之间的大圆距离,这两点是通过经纬度给出的。它是球面三角学中一个更一般公式的特例,即汉弗林定律,它将球面三角形的边和角联系起来。(http://en.wikipedia.org/wiki/Haversine_formula)
在球面三角学中,余弦定律(也称为边余弦定律)是定理,可将球面三角形的边角联系起来,类似于平面三角学中的普通余弦定律。(http://en.wikipedia.org/wiki/Spherical_law_of_cosines)
// Test coordinates
// Nantucket Memorial Airport (KACK)
CGFloat latitude1 = 41.2531111;
CGFloat longitude1 = -70.0603056;
// Block Island Airport (KBID)
CGFloat latitude2 = 41.1681111;
CGFloat longitude2 = -71.5778333;
// Logan International Airport (KBOS)
CGFloat latitude1 = 42.3629722;
CGFloat longitude1 = -71.0064167;
// San Francisco International (KSFO)
CGFloat latitude2 = 37.6191050;
CGFloat longitude2 = -122.3752372;
// Setup
ZFHaversine *distanceAndBearing = [[ZFHaversine alloc] init];
[distanceAndBearing setLatitude1:latitude1];
[distanceAndBearing setLongitude1:longitude1];
[distanceAndBearing setLatitude2:latitude2];
[distanceAndBearing setLongitude2:longitude2];
// Setup with coordinates
ZFHaversine *distanceAndBearing = [[ZFHaversine alloc] initWithLatitude1:latitude1
longitude1:longitude1
latitude2:latitude2
longitude2:longitude2];
// __Optional__: Change the default distance formula from Haversine to the Spherical Law Of Cosines
[distanceAndBearing setFormulaMode:sphericalFormula];
// Results for Distance
NSLog(@"Kilos %f", [distanceAndBearing kilos]);
NSLog(@"Meters %f", [distanceAndBearing meters]);
NSLog(@"Nautial Miles %f", [distanceAndBearing nauticalMiles]);
NSLog(@"Miles %f", [distanceAndBearing miles]);
NSLog(@"Yards %f", [distanceAndBearing yards]);
NSLog(@"Feet %f", [distanceAndBearing feet]);
// Results for Initial and Final Bearing
NSLog(@"Initial Bearing %f", [distanceAndBearing initialBearing]);
NSLog(@"Initial Bearing %f", [distanceAndBearing finalBearing]);
Steve Foster @flightblog
MIT许可证(MIT)版权所有 © 2013 Steve Foster [email protected]
任何人都可以免费获得此软件及其相关文档的副本(“软件”),可以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、出版、分发、再许可以及销售软件的副本,并允许向收到软件的人提供这样做,前提是以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。
软件“按原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权持有者不对因使用或otherwise处理软件而产生的任何索赔、损害或其他责任承担责任,无论这些责任基于合同、侵权或otherwise,源于、出于或与软件使用或otherwise有关。