C语言计算地球两点间的梯形面积

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);
}

猜你喜欢

转载自blog.csdn.net/peter_young1990/article/details/114802908