[sicily online]1070. Hansel and Grethel

來源:互聯網
上載者:User
Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

On a warm summer afternoon, Hansel and Grethel are walking together in the fields. It is getting late and, to be honest, they are lost. Grethel is a little scared, still vividly remembering the last time they got lost in the forest. That time, an evil witch
had locked them inside a house built of gingerbread and sugar! But Hansel can reassure her: this time they are well prepared. Hansel has taken a map and a compass with him!

Hansel picks two clearly outstanding features in the landscape, and uses the compass to measure the direction towards both objects. Grethel locates the objects on the map, and writes down the corresponding map coordinates. Based on this information, they will
be able to accurately determine their own position on the map.

The coordinates of two marker objects, and the direction (angle from the North) towards these objects are known. Write a program which uses this data to calculate the coordinates of Hansel and Grethel's current location.

Input

The first line of the input contains one positive number: the number of situations in which a position must be determined. Following are two lines per situation, describing the two marker objects. Each marker object is described by a line containing three integer
numbers:

> the x-coordinate of the object on the map (0 <= x <= 100);

the x-axis runs West-to-East on the map, with increasing values towards the East.

> the y-coordinate of the object on the map (0 <= y <= 100);

the y-axis runs South-to-North on the map, with increasing values towards the North.

> the direction d of the object in degrees (0 <= d < 360);

with 0 = North, 90 = East, 180 = South, and so on.

To keep the position calculations accurate, Hansel makes sure that the directions of the two objects are not exactly equal, and do not differ by exactly 180.

Output

One line per situation, containing the result of the position calculation: two numbers, separated by a space, each having exactly 4 digits after the decimal point. These numbers represent the x and y coordinates of the position of Hansel and Grethel (0 <= x,
y <= 100). Round the numbers as usual: up if the next digit would be >= 5, down otherwise.

Sample Input

2 30 50 90 20 40 180 30 40 96 20 20 150

Sample Output

20.0000 50.0000 7.0610 42.4110

題目分析:

其實就是求兩個之間的交點,有兩個需要注意的地方

1,直線斜率不存在的時候

2,人的角度到座標系的斜率的轉化

#include<iostream>#include <iomanip>#include<stdio.h>#include<cmath>#include<iomanip>#include<list>#include <map>#include <vector>#include <string>#include <algorithm>#include <sstream>#include <stack>#include<queue>#include<string.h>#include<set>using namespace std;const double PI=3.14159265;const int MAX=999999;int main(){//cout<<tan(PI);int n;cin>>n;for(int xx=0;xx<n;xx++){int x1,y1,r1;int x2,y2,r2;cin>>x1>>y1>>r1>>x2>>y2>>r2;if(r1>=180)r1=r1-180;if(r2>=180)r2=r2-180;r1=90-r1;r2=90-r2;double k1,b1,k2,b2;double x,y;if(fabs((double)r1)!=90.0){k1=tan(r1/180.0*PI);b1=y1-x1*k1;}if(fabs((double)r2)!=90.0){k2=tan(r2/180.0*PI);b2=y2-x2*k2;}if(fabs((double)r1)==90.0){x=x1;y=k2*x+b2;}else if(fabs((double)r2)==90.0){x=x2;y=k1*x+b1;}else {x=(b2-b1)/(k1-k2);y=k1*x+b1;}cout<<setiosflags(ios::fixed)<<setprecision(4)<<fabs(x)<<" "<<fabs(y)<<endl;}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.