根据度数和距离获得新的共同标准

时间:2009-09-03 18:52:49

标签: iphone cocoa-touch math

我有一个来自Core Location的坐标,想要计算坐标和距离的坐标,比如km。

我认为这是这里的公式。 http://www.movable-type.co.uk/scripts/latlong.html

  

公式:
  lat2 =   asin(sin(lat1)* cos(d / R)+   COS(LAT1)* SIN(d / R)* COS(θ))
  lon2 =   lon1 +   ATAN2(SIN(θ)* SIN(d / R)* COS(LAT1),   COS(d / R)-sin(LAT1)* SIN(LAT2))
  d / R是   角距离(以弧度表示),   其中d是行进的距离和   R是地球的半径

我有以下代码。

     CLLocationCoordinate2D linecoordstart;
     linecoordstart = [[existingpoints objectAtIndex:i] coordinate];
     NSString *bearing = [[existingpoints objectAtIndex:i] heading];
     NSString *distance = [[existingpoints objectAtIndex:i] distance];
CLLocationCoordinate2D sourceCoordinate;
                sourceCoordinate = [[existingpoints objectAtIndex:i] coordinate];


NSLog(@"%f,%f",sourceCoordinate.latitude,sourceCoordinate.longitude);
   float lat2;
int d = 5;
int R = 6371;
lat2 = asin(sin(sourceCoordinate.latitude)cos(d/R) + cos(sourceCoordinate.latitude)sin(d/R)cos(180));
NSLog(@"%f",lat2);

我希望能够传递一个轴承,这个轴承目前是NSString和距离。我不知道如何在我的生活中使用Math.h函数!

1 个答案:

答案 0 :(得分:1)

要从NSString转换为您可以使用的数字:

NSString* intNum = @"123";
NSString* floatNum = @"123.456";
int iv = [intNum intValue];
float fv = [floatNum floatValue];

此外,dR都定义为int(而不是float)。在您的代码中d/R会将值剪切为整数0.可能希望将它们设为float(并使用浮点值初始化它们)。