C语言计算地球两点间的梯形面积
1.输入两点的经纬度,计算梯形面积。
输入1,选为国际75椭球。输入第一点经度为1°2′3″,纬度为3°2′1″;第二点经度为51°52′53″,纬度为53°52′51″。计算出椭球梯形面积为105588632875233.765625平方米(52794316.437617平方公里)。
2.部分源代码
#include<stdio.h>
#include<math.h>
#define guoji75_a 6378140.00
#define guoji75_b 6356755.2881575287
#define PI 3.1415926535897932
#define keshi_a 6378245.0
#define keshi_b 6356863.0187730473
double mianji(int l1[],int b1[],int l2[],int b2[],double a,double b)
{
double L1,L2,B1,B2,P,e1;
L1 = (l1[0] + (l1[1] / 60) + (l1[2] / 3600)) * PI /180;
L2 = (l2[0] + (l2[1] / 60) + (l2[2] / 3600)) * PI /180;
B1 = (b1[0] + (b1[1] / 60) + (b1[2] / 3600)) * PI /180;
B2 = (b2[0] + (b2[1] / 60) + (b2[2] / 3600)) * PI /180;
e1 = (sqrt((a * a) - (b * b))) / a;
P=...
return P;
}
main()
{
double a, e1,e2,M,N,R,_a,_b,A,B,X,P,x1,x2;
int weidu[3],fangweijiao[3],L1[3],L2[3],B1[3],B2[3],weidu1[3],weidu2[3];
int i,fg;
printf("请输入计算所用的椭球(国际75椭球请输1,克氏椭球请输2,回车结束。):\n\n");
scanf_s("%d", &fg);
if (fg == 1)
{
_a = guoji75_a;
_b = guoji75_b;
}
else if (fg == 2)
{
_a = keshi_a;
_b = keshi_b;
}
printf("下面计算椭球面梯形面积\n");
printf("请输入第一点经度L1(度分秒之间用空格隔开,按回车结束):\n\n");
for(i=0;i<3;i++)
scanf_s("%d",&L1[i]);
printf("请输入第一点纬度B1(度分秒之间用空格隔开,按回车结束):\n\n");
for(i=0;i<3;i++)
scanf_s("%d",&B1[i]);
printf("请输入第二点经度L2(度分秒之间用空格隔开,按回车结束):\n\n");
for(i=0;i<3;i++)
scanf_s("%d",&L2[i]);
printf("请输入第二点纬度B2(度分秒之间用空格隔开,按回车结束):\n\n");
for(i=0;i<3;i++)
scanf_s("%d",&B2[i]);
P=mianji(L1,B1,L2,B2,_a,_b);
printf("p1(%d°%d′%d″,%d°%d′%d″)和p2(%d°%d′%d″,%d°%d′%d″)构成的椭球面体积为:\n%f平方米(%f平方公里)\n\n",L1[0],L1[1],L1[2],B1[0],B1[1],B1[2],L2[0],L2[1],L2[2],B2[0],B2[1],B2[2],P*2,P/1000000);
}