#include <bits/stdc++.h>
using namespace std;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
double toRad(int angle) { return PI * angle / 180.0; }
int a, w, h;
double angle;
complex<double> intersect(complex<double> p1, complex<double> p2,
                          complex<double> p3, complex<double> p4) {
  complex<double> ret;
  double u = (p4.real() - p3.real()) * (p1.imag() - p3.imag()) -
             (p4.imag() - p3.imag()) * (p1.real() - p3.real());
  u /= (p4.imag() - p3.imag()) * (p2.real() - p1.real()) -
       (p4.real() - p3.real()) * (p2.imag() - p1.imag());
  return complex<double>(p1.real() + u * (p2.real() - p1.real()),
                         p1.imag() + u * (p2.imag() - p1.imag()));
}
complex<double> rotate(complex<double> p, double angle) {
  return complex<double>(p.real() * cos(angle) - p.imag() * sin(angle),
                         p.real() * sin(angle) + p.imag() * cos(angle));
}
double dist(complex<double> a, complex<double> b) {
  return (hypot((a - b).real(), (a - b).imag()));
}
int main() {
  cin >> w >> h >> a;
  long double ans = 0;
  if (a > 90) a = 180 - a;
  if (a == 0)
    ans = 1.0 * w * h;
  else if (a == 90)
    ans = min(w, h) * min(w, h);
  else {
    angle = toRad(a);
    if (w < h) swap(w, h);
    complex<double> A(-0.5 * w, 0.5 * h);
    complex<double> B(0.5 * w, 0.5 * h);
    complex<double> C(0.5 * w, -0.5 * h);
    complex<double> D(-0.5 * w, -0.5 * h);
    complex<double> E = rotate(A, angle), F = rotate(B, angle),
                    G = rotate(C, angle), H = rotate(D, angle);
    complex<double> N = intersect(A, B, E, F);
    complex<double> M = intersect(A, D, E, F);
    complex<double> O = intersect(A, B, F, G);
    complex<double> P = intersect(B, C, F, G);
    ans = 1.0 * w * h;
    if (G.imag() < B.imag()) {
      long double area = dist(A, M) * dist(A, N) + dist(B, O) * dist(B, P);
      ans -= area;
    } else {
      N = intersect(A, B, H, G);
      M = intersect(C, D, H, G);
      complex<double> K(N.real(), M.imag());
      ans -= 2.0 * h * dist(C, K);
      ans -= dist(K, M) * dist(N, K);
    }
  }
  cout << fixed << setprecision(10) << ans << endl;
  return 0;
}
