保姆级C语言版高斯坐标正算反算倾情奉献!

Posted 刘一哥GIS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保姆级C语言版高斯坐标正算反算倾情奉献!相关的知识,希望对你有一定的参考价值。


扩展阅读:

【小程序】坐标正算神器V1.0(附C/C#/VB源程序)
测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)

正反算原理速递

  • 已知边长和方位角,由已知点计算待定点的坐标,称为坐标正算
  • 已知两点坐标,反求边长和方位角,称为坐标反算

坐标正算原理:

在这里插入图片描述
坐标反算原理:

在这里插入图片描述

C语言正反算实现

打开老牌编译器Visual C++ 6.0,点击【新建】→【工程】→【Win32 Console Application】→输入工程名称→确定存放路径→勾选Win32平台,点击确定,完成工程的创建。

在这里插入图片描述
选择【一个空工程】,点击【完成】。

在这里插入图片描述
点击【文件】→【新建】→【文件】→【C++ Source File】→输入文件名Common.c→点击【确定】。

在这里插入图片描述

坐标正算

打开Common.c,键入如下代码:

在这里插入图片描述
Common.cs源码:

#include<stdio.h>
#include<math.h>

const double pi=3.14159265;

void zbzs()
{
	double xb,yb,xa,ya,dab,aab;

	printf("请输入xa,ya:");
	scanf("%lf,%lf",&xa,&ya);

	printf("请输入dab:");
	scanf("%lf",&dab);


	printf("请输入方位角:");
	scanf("%lf",&aab);

	aab=aab*pi/180;   

	xb=xa+dab*cos(aab);
	yb=ya+dab*sin(aab);
	
	printf("待求点的坐标为:xb=%lf,yb=%lf\\n",xb,yb);
}

点击【文件】→【新建】→【文件】→【C++ Source File】→输入文件名a1.c→点击【确定】。

在这里插入图片描述
打开a1.c,键入如下代码:

在这里插入图片描述
a1.c源代码:

#include<stdio.h>
#include"common.c"
main()
{
	zbzs();
}

运行结果:

在这里插入图片描述

坐标反算

void zbfs()
{
	double xb,yb,xa,ya,dab,aab,dx,dy;

	printf("请输入xa,ya:");
	scanf("%lf,%lf",&xa,&ya);

	printf("请输入xb,yb:");
	scanf("%lf,%lf",&xb,&yb);

	dx=xb-xa; dy=yb-ya;
	dab=sqrt(pow(dx,2)+pow(dy,2));
	
	printf("水平距离为:%lf\\n",dab);

	aab=atan(fabs(dy/dx));
	aab=aab*180/pi;

	if(dx>0 && dy >0)
		aab=aab;
	if(dx<0 && dy >0)
		aab=180-aab;
	if(dx<0 && dy <0)
		aab=180+aab;
	if(dx>0 && dy <0)
		aab=360-aab;

	printf("坐标方位角为:%lf\\n",aab);
}

函数调用:

#include<stdio.h>
#include"common.c"
main()
{
	//zbzs();
	zbfs();
}

运行结果:

在这里插入图片描述

以上是关于保姆级C语言版高斯坐标正算反算倾情奉献!的主要内容,如果未能解决你的问题,请参考以下文章

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)

求助:卡西欧fx5800怎样编坐标正算中桩边桩计算公式、坐标反算计算公式、圆曲线中桩边桩计算公式?

测绘程序设计坐标反算神器V1.0(附C/C#/VB源程序)

RPC模型

测绘程序设计坐标反算神器V1.0(附C/C#/VB源程序)