#include <bits/stdc++.h>   const double PI = 3.1415926535897932384626;   const int KL = 1e6;   const long long MOD = 1e9 + 7;   using namespace std;   void show(complex<double> a) {     cout << fixed << setprecision(10) << a.real() <<   +   << a.imag() <<  i           << endl;   }   complex<double> rot(complex<double> a, complex<double> o, double alpha) {     return (a - o) * polar(1.0, alpha * PI / 180.0) + o;   }   complex<double> intersection(complex<double> a, complex<double> b, double h) {     double m = (a.imag() - b.imag()) / (a.real() - b.real());     double p = a.imag() - m * a.real();     complex<double> ret((h - p) / m, h);     return ret;   }   double h, w;   double alpha;   int main() {     cin >> w >> h >> alpha;     if (w < h) swap(h, w);     if (alpha >= 90) alpha = 180 - alpha;     double wt = sqrt(w * w + h * h);     if (alpha == 0) {       cout << fixed << setprecision(10) << w * h << endl;       return 0;     }     complex<double> a(-w / 2.0, h / 2.0);     complex<double> b(w / 2.0, h / 2.0);     complex<double> d(w / 2.0, -h / 2.0);     complex<double> o(0, 0);     double mx_angle = 2 * abs(arg(b)) * 180.0 / PI;     if (alpha >= mx_angle) {       cout << fixed << setprecision(10) << h * h / sin(alpha * PI / 180.0)            << endl;       return 0;     }     complex<double> a1 = rot(a, o, alpha);     complex<double> b1 = rot(b, o, alpha);     complex<double> c1 = rot(d, o, alpha);     complex<double> A = intersection(a1, b1, h / 2);     complex<double> B = intersection(b1, c1, h / 2);     double d1 = A.real() - a.real();     double d2 = b.real() - B.real();     double wt1 = d1 / cos(alpha * PI / 180.0);     double wt2 = d2 / sin(alpha * PI / 180.0);     double area =         d1 * wt1 * sin(alpha * PI / 180.0) + d2 * wt2 * cos(alpha * PI / 180.0);     double ans = w * h - area;     cout << fixed << setprecision(10) << ans << endl;     return 0;   }   