📄 2.cpp
字号:
/************************************************************************
* 文件名: 2.cpp
* 文件描述: 求两条弧线在球面上相交的顺时针角度以及与与正北(通过相交点的经线)方向的夹角。
* 创建人: 郭建山, 2008年11月07日
************************************************************************/
#include<iostream>
#include<math.h>
using namespace std;
double GetAngle(double xa,double ya,double xb,double yb,double xc,double yc);//两条弧线的夹角
void main()
{
const double PI=3.14159;
double xa,ya,xb,yb,xc,yc;
cout<<"输入顶点A的经度:"<<endl;
cin>>xa;
cout<<"输入顶点A的纬度:"<<endl;
cin>>ya;
cout<<"输入起始点B的经度:"<<endl;
cin>>xb;
cout<<"输入起始点B的纬度:"<<endl;
cin>>yb;
cout<<"输入终点C的经度:"<<endl;
cin>>xc;
cout<<"输入终点C的纬度:"<<endl;
cin>>yc;
xa=xa/57.3;//改成弧度单位
ya=ya/57.3;
xb=xb/57.3;
yb=yb/57.3;
xc=xc/57.3;
yc=yc/57.3;
//求起始线段与正北方向的夹角
double BAN=GetAngle(xa,ya,xa,90,xb,yb);
if(xb<xa)
{
cout<<" A,B两点组成的线段与经过A点的经线的夹角"<<360-BAN<<endl;
BAN=360-BAN;
}
else
{
cout<<" A,B两点组成的线段与经过A点的经线的夹角"<<BAN<<endl;
}
//求终止线段与正北方向的夹角
double CAN=GetAngle(xa,ya,xa,90,xc,yc);
if(xc<xa)
{
cout<<" A,C两点组成的线段与经过A点的经线的夹角"<<360-CAN<<endl;
CAN=360-CAN;
}
else
{
cout<<" A,C两点组成的线段与经过A点的经线的夹角"<<CAN<<endl;
}
//求两条圆弧的顺时针夹角
double BAC=GetAngle(xa,ya,xb,yb,xc,yc);
if((BAN-CAN<180)&&(BAN-CAN>0))
cout<<"两条弧线的球面顺时针夹角为"<<360-BAC<<endl;
else
cout<<"两条弧线的球面顺时针夹角为"<<BAC<<endl;
}
/*================================================================
* 函数名: GetAngle
* 参数: double xa, ya (两条弧线相交点的经度和纬度)
* double xb, yb (起始弧线的起始点的经度和纬度)
* double xc, yc (终止弧线的终点的经度和纬度)
* 功能描述: 两条弧线在球面上相交的角度
* 返回值: double
* 作 者: 郭建山 20058年11月07日
================================================================*/
double GetAngle(double xa,double ya,double xb,double yb,double xc,double yc)
{
double a,b,c,d,BAC;//定义圆心角和弧线夹角
a=acos(cos(yb)*cos(yc)*cos(xb-xc)+sin(yb)*sin(yc));//求圆心角(弧度表示)
b=acos(cos(ya)*cos(yc)*cos(xa-xc)+sin(ya)*sin(yc));//求圆心角(弧度表示)
c=acos(cos(ya)*cos(yb)*cos(xa-xb)+sin(ya)*sin(yb));//求圆心角(弧度表示)
d=(cos(a)-cos(b)*cos(c))/(sin(b)*sin(c));
BAC=57.3*acos(d);//求弧线夹角(单位度)
return BAC;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -