#include #include #include #include #include #include #include #include #include // require sort next_permutation count __gcd reverse etc. #include // require abs exit atof atoi #include // require scanf printf #include #include // require accumulate #include // require fabs #include #include #include #include // require setw #include // require stringstream #include // require memset #include // require tolower, toupper #include // require freopen #include // require srand #include #define rep(i,n) for(int i=0;i<(n);i++) #define ALL(A) A.begin(), A.end() #define EPS 1e-4 #define PI 3.141592653589793238462643383279 // 2つのスカラーが等しいかどうか #define EQ(a,b) (abs((a)-(b)) < EPS) using namespace std; typedef complex P; // 反時計順にソート bool cmp (P a, P b ) { double arga = arg (a ); double argb = arg (b ); if (!EQ (arga, argb ) ){ return arga < argb; } // end if return abs (a ) > abs (b ); } const double base[6] = { -180, -120, -60, 0, 60, 120 }; int main() { ios_base::sync_with_stdio(0); int T; cin >> T; while (T-- ){ vector

p(6 ); rep (i, 6 ){ double x, y; cin >> x >> y; p[i] = P(x, y ); } // end rep sort (ALL (p ), cmp ); set ans; ans.clear(); // cerr << "diff:" << endl; rep (i, 6 ){ double curr = 180.*arg (p[i] )/PI; if (abs (curr + 180. ) < EPS ) curr = -180.; double diff = curr - base[i]; // fprintf(stderr, "%.8lf ", diff ); if (abs(diff ) < EPS || abs (diff - 60. ) < EPS ) diff = 0.; ans.insert (diff ); // fprintf(stderr, "%.8lf\n", diff ); } // end rep double res = 0.; // cerr << "ans_size: " << ans.size() << ' '; if (ans.size() == 1 ){ res = *ans.begin(); }else{ double sum = 0.; set::iterator it = ans.begin(); for (; it != ans.end(); it++ ){ sum += (*it); // cerr << (*it) << ' '; } // end for // cerr << endl; res = sum/(double)ans.size(); } // end if printf ("%.8lf\n", res ); } // end while return 0; }