保姆级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)