读书人

C 语言 求中纬度角度

发布时间: 2012-06-24 18:32:37 作者: rapoo

C 语言 求经纬度角度
给定任意两点经纬度,计算这两点所在直线与赤道的夹角。希望各位大神能贴出代码 本人刚接触C语言不久!!

[解决办法]
这是我的程序,应该没问题!
输入格式如下:
如果两点的坐标为:东经20度,北纬45和西经160度,南纬45度
则输入:20 e 45 n 160 w 45 s

下面是程序运行结果:
20 e 45 n 160 w 45 s
45
Press any key to continue

C/C++ code
#include <iostream>#include <math.h>using namespace std;const double PAI = 3.1415926535897932384626433;//如果两点的坐标分别为:东经20度,北纬45和西经160度,南纬45度,则输入"20 e 45 n 160 w 45 s"然后回车。double get_angle(double longitude1, char longitude1_flag, double latitude1, char latitude1_flag,                 double longitude2, char longitude2_flag, double latitude2, char latitude2_flag){        if(longitude1_flag=='w')    {        longitude1 = 360-longitude1;    }    if(latitude1_flag=='s')    {        latitude1 = -1*latitude1;    }    if(latitude2_flag=='s')    {        latitude2 = -1*latitude2;    }    if(longitude2_flag=='w')    {        longitude1 = 360-longitude1;    }    double shita1 = longitude1/180*PAI;    double shita2 = longitude2/180*PAI;    double fai1 = PAI/2-latitude1/180*PAI;    double fai2 = PAI/2-latitude2/180*PAI;    double x1 = sin(fai1)*cos(shita1);    double x2 = sin(fai2)*cos(shita2);    double y1 = sin(fai1)*sin(shita1);    double y2 = sin(fai2)*sin(shita2);    double z1 = cos(fai1);    double z2 = cos(fai2);    double x = x2-x1;    double y = y2-y1;    double z = z2-z1;    double angle = atan(z/sqrt(x*x + y*y));    if(angle<0)    {        angle *= -1;    }    if(angle>90)    {        angle = 180-angle;    }    angle = angle/PAI*180;    return angle;}int main(){        double longitude1;    char longitude1_flag;    double latitude1;    char latitude1_flag;    double longitude2;    char longitude2_flag;    double latitude2;    char latitude2_flag;    cin>>longitude1>>longitude1_flag>>latitude1>>latitude1_flag>>longitude2>>longitude2_flag>>latitude2>>latitude2_flag;    cout<<get_angle(longitude1, longitude1_flag, latitude1, latitude1_flag, longitude2, longitude2_flag, latitude2, latitude2_flag)<<endl;    return 0;} 

读书人网 >C语言

热点推荐