“塔康”导航系统


http://210.38.224.114:808/JudgeOnline/problem.php?id=1293

atan()函数求出来是弧度,*57.27

度数看清楚


塔康”(TACAN-Tactical Air Navigation System)是战术空中导航系统的简称,由美国于1955年研制成功,后被法国、德国、英国、加拿大、日本、韩国等广泛使用。主要用于为舰载机提供从几十千米到几百千米距离范围内的导航,保障飞机按预定航线飞向目标,机群的空中集结,以及在复杂气象条件下引导飞机归航和进场等。

这是一种极座标无线电空中导航系统,当设定旗舰为座标原点后,舰载飞机便可通过获取与座标原点所成的角度和距离,从而进行定位。

    但某舰队现在使用的定位系统是X-Y直角座标系的,舰队指挥官需要你编写一个程序计算舰载机目前所在的位置与旗舰的距离和相对于X轴所成的夹角的角度,以便使用“塔康”导航系统对舰载机进行导航。

Input

 测试数据有多组。第一行为一个整数T,表示有T组测试数据。每组数据开头输入两个整数x和y,表示旗舰的座标。然后输入一个整数n(1 ≤ n ≤ 100),表示有n架舰载机,接下来有n行输入,每行两个整数xi和yi(-1000 ≤ xi,yi ≤ 1000),表示第i架舰载机的座标。

Output

输出n行,每行输出两个实数,分别表示第n架舰载机与旗舰的相对于X轴所成的夹角的角度r(0 <= r <= 90)、与旗舰之间的距离(四舍五入保留小数点后两位)。输出的具体格式请看样例。

Sample Input

20 022 2-1 -30 021 22 2

Sample Output

45.00 DEG / 2.83 KM
71.57 DEG / 3.16 KM
63.43 DEG / 2.24 KM
45.00 DEG / 2.83 KM


#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
	int n;int m;
	double deg,dd;
	cin>>n;
	while(n--)
	{
		double a,b;
		double aa[110],bb[110],km;
		cin>>a>>b;	
		cin>>m;
		int x=1;
		for(int i=0;i<m;i++)
			cin>>aa[i]>>bb[i];	
		for(int i=0;i<m;i++)
		{
			x=1;
			dd=(bb[i]-b)/(aa[i]-a);
			deg=atan(dd)*57.29578;
			if(deg<=0)
				deg=0-deg;
			if((aa[i]-a)==0.0&&(bb[i]-b)==0.0)
				cout<<"0.00 DEG / ";
			else
			printf("%.2lf DEG / ",deg);
			km=sqrt((aa[i]-a)*(aa[i]-a)+(bb[i]-b)*(bb[i]-b));
			printf("%.2lf KM\n",km);
		}
	}
}


发布了65 篇原创文章 · 获赞 3 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章