#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, double alpha) {
  return a * polar(1.0, alpha * PI / 180.0);
}
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, alpha);
  complex<double> b1 = rot(b, alpha);
  complex<double> c1 = rot(d, 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;
}
