2009-09-03 4 views
0

私はコアの位置からの座標を持ち、ベアリングと距離を与えられた座標を計算したいとします(例: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関数を使う方法を考えることができません! NSStringから使用できる数値に変換するには

答えて

1

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

dR両方がint(代わりのfloat)として定義されています。コードd/Rでは、値を整数0にクリップします。floatにしたい場合があります(フロート値で初期化します)。

関連する問題