0

北と地図上の点の間の角度を見つける必要があります(21.4167、-39.8167)。

これが私のコードです

double MECCA_LONGITUDE = 21.4167;
double MECCA_LATITUDE = -39.8167;

-(void) getAngle :(float) phoneAngle: (float) lon:(float) lat
{

 float ad = atan (sin (lon - MECCA_LATITUDE) /  ( (cos (lat)) * (tan (MECCA_LATITUDE)) ) - ( (sin (lat)) * (cos (lon - MECCA_LONGITUDE)) ));

NSLog(@"###### %f", CC_RADIANS_TO_DEGREES(ad));
}

私はまだ正しい答えを得ていません。ヒントをいただければ幸いです。ありがとう。

4

1 に答える 1

2

あなたの主な問題は、ラジアンで彼らの議論sin()cos()取り、あなたは度を通過しているということです(あなたはメッカの経度と緯度も交換しています)。

試す:

double MECCA_LATITUDE = 21.4167;
double MECCA_LONGITUDE = 39.8167;

double r_delta_lon = CC_DEGREES_TO_RADIANS(MECCA_LONGITUDE - lon);
double r_lat2 = CC_DEGREES_TO_RADIANS(MECCA_LATITUDE);
double r_lon1 = CC_DEGREES_TO_RADIANS(lon);
double r_lat1 = CC_DEGREES_TO_RADIANS(lat);

double ad = atan2(sin(r_delta_lon) * cos(r_lat2),
    cos(r_lat1) * sin(r_lat2) - sin(r_lat1) * cos(r_lat2) * cos(r_delta_lon));
于 2012-12-10T13:23:06.633 に答える