#include <bits/stdc++.h>
using namespace std;
struct point {
  long double x, y;
  point(long double X = 0, long double Y = 0) {
    x = X;
    y = Y;
  }
  long double dist(point& p) {
    return sqrt(0. + ((p.x - x) * (p.x - x)) + ((p.y - y) * (p.y - y)));
  }
  point rotate(long double a) {
    return point(x * cos(a) + y * sin(a), -x * sin(a) + y * cos(a));
  }
};
struct hull {
  inline long double _vp(point& a, point& b, point& c) {
    return (a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x);
  }
  bool _crossll(point& a, point& b, point& c, point& d, long double& k1,
                long double& k2) {
    long double z = (b.x - a.x) * (d.y - c.y) - (b.y - a.y) * (d.x - c.x);
    if (z != 0) {
      k1 = ((d.x - c.x) * (a.y - c.y) - (d.y - c.y) * (a.x - c.x)) / z;
      k2 = ((b.x - a.x) * (a.y - c.y) - (b.y - a.y) * (a.x - c.x)) / z;
      return true;
    } else
      return false;
  }
  vector<point> d, td;
  int n;
  hull() {
    d.push_back(point(-1e9, -1e9));
    d.push_back(point(-1e9, 1e9));
    d.push_back(point(1e9, 1e9));
    d.push_back(point(1e9, -1e9));
    d.push_back(d[0]);
    n = 4;
  }
  void cross_halfplane(point a, point b) {
    int i;
    for (i = 0; i < n; ++i)
      if (_vp(b, d[i], a) > 0 && _vp(b, d[i + 1], a) <= 0) break;
    if (i == n) return;
    td.clear();
    long double k1, k2;
    _crossll(a, b, d[i], d[i + 1], k1, k2);
    if (k2 < 1.0)
      td.push_back(point(d[i].x + (d[i + 1].x - d[i].x) * k2,
                         d[i].y + (d[i + 1].y - d[i].y) * k2));
    for (i = (i + 1) % n; _vp(b, d[i], a) <= 0; i = i < n - 1 ? i + 1 : 0)
      td.push_back(d[i]);
    i = (i - 1 + n) % n;
    _crossll(a, b, d[i], d[i + 1], k1, k2);
    if (k2 > 0)
      td.push_back(point(d[i].x + (d[i + 1].x - d[i].x) * k2,
                         d[i].y + (d[i + 1].y - d[i].y) * k2));
    td.push_back(td[0]);
    d.swap(td);
    n = d.size() - 1;
  }
  inline point operator[](int i) { return d[i]; }
  void print() {
    for (int i = 0; i < n; ++i) cout << "(" << d[i].x << ',' << d[i].y << ") ";
    cout << endl;
  }
};
int n, m;
int i, j, k, l;
int main() {
  double w, h, a;
  cin >> w >> h >> a;
  w /= 2;
  h /= 2;
  a = a / 180 * M_PI;
  hull p;
  p.cross_halfplane(point(w, -h), point(-w, -h));
  p.cross_halfplane(point(-w, -h), point(-w, h));
  p.cross_halfplane(point(-w, h), point(w, h));
  p.cross_halfplane(point(w, h), point(w, -h));
  p.cross_halfplane(point(w, -h).rotate(a), point(-w, -h).rotate(a));
  p.cross_halfplane(point(-w, -h).rotate(a), point(-w, h).rotate(a));
  p.cross_halfplane(point(-w, h).rotate(a), point(w, h).rotate(a));
  p.cross_halfplane(point(w, h).rotate(a), point(w, -h).rotate(a));
  long double s = 0;
  for (i = 0; i < p.n; ++i) s += (p[i].y + p[i + 1].y) * (p[i].x - p[i + 1].x);
  printf("%.12lf\n", (double)((s) < 0 ? -(s) : (s)) / 2);
  return 0;
}
