POJ 1254 - Hansel and Grethel

http://poj.org/problem?id=1254

概要

2つの物体の座標と,今いる地点からそれらがどの角度の方向に見えるかが与えられるので,現在地の座標を答える.

制約

解法

やるだけ.

 1 #include <cstdio>
 2 #include <complex>
 3 #include <cmath>
 4 using namespace std;
 5 typedef complex<double> P;
 6 static const double PI = acos(-1.0);
 7 
 8 inline double cross(const P& a, const P& b)
 9 {
10   return a.real()*b.imag() - b.real()*a.imag();
11 }
12 
13 struct line
14 {
15   P base, dir;
16   inline P intersection(const line& ln) const
17   {
18     return base + dir*(cross(ln.dir, ln.base - base))/cross(ln.dir, dir);
19   }
20 };
21 
22 int main()
23 {
24   int T;
25   scanf("%d", &T);
26   while (T-- > 0) {
27     line ls[2];
28     for (int i = 0; i < 2; i++) {
29       int x, y, theta;
30       scanf("%d %d %d", &x, &y, &theta);
31       ls[i].base = P(x, y);
32       ls[i].dir = polar(1.0, (270-theta)/180.0*PI);
33     }
34     const P p = ls[0].intersection(ls[1]);
35     printf("%.4f %.4f\n", p.real(), p.imag());
36   }
37   return 0;
38 }
poj/1254.cc