我需要找到北方和地图中一个点之间的角度(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));
}
我还没有得到正确答案。任何提示将不胜感激。感谢。
答案 0 :(得分: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));