#include <bits/stdc++.h>
using namespace std;
const int di[] = {-1, 0, 1, 0};
const int dj[] = {0, 1, 0, -1};
const long long MOD = 1e9 + 7;
const long long INF = 1e9;
struct line {
  long double a;
  long double b;
  bool vert = false;
};
const long double PI = atan(1) * 4.0;
long double w, h, alpha;
vector<pair<long double, long double> > bf(4), af(4);
vector<line> bfl(4), afl(4), l;
pair<long double, long double> rotate(pair<long double, long double> p,
                                      double ang) {
  pair<long double, long double> ret;
  ang = ang * PI / 180.0;
  ret.second = p.second * cos(ang) - p.first * sin(ang);
  ret.first = p.second * sin(ang) + p.first * cos(ang);
  return ret;
}
inline double slope(pair<long double, long double> a,
                    pair<long double, long double> b) {
  if (a.first == b.first) return INF;
  return (a.second - b.second) / (a.first - b.first);
}
pair<long double, long double> intersect(line a, line b) {
  if (a.vert && b.vert) return make_pair(INF, INF);
  if (a.vert) return make_pair(a.a, b.a * a.a + b.b);
  if (b.vert) return make_pair(b.a, a.a * b.a + a.b);
  if (a.a == b.a) return make_pair(INF, INF);
  pair<long double, long double> ret;
  ret.first = (b.b - a.b) / (a.a - b.a);
  ret.second = a.a * ret.first + a.b;
  return ret;
}
bool cmp(pair<long double, long double> a, pair<long double, long double> b) {
  return atan2(a.second, a.first) < atan2(b.second, b.first);
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  cin >> w >> h >> alpha;
  if (alpha == 0 || alpha == 180 || alpha == 90 && w == h) {
    cout << fixed << setprecision(9) << w * h << endl;
    return 0;
  }
  bf[0] = make_pair(w / 2, h / 2);
  bf[1] = make_pair(w / 2, -h / 2);
  bf[2] = make_pair(-w / 2, -h / 2);
  bf[3] = make_pair(-w / 2, h / 2);
  for (int i = 0; i < 4; i++) af[i] = rotate(bf[i], 360.0 - alpha);
  for (int i = 0; i < 4; i++) {
    bfl[i].a = slope(bf[i], bf[(i + 1) % 4]);
    if (bfl[i].a == INF) {
      bfl[i].vert = true;
      bfl[i].a = bf[i].first;
    } else
      bfl[i].b = bf[i].second - bfl[i].a * bf[i].first;
    afl[i].a = slope(af[i], af[(i + 1) % 4]);
    if (afl[i].a == INF) {
      afl[i].vert = true;
      afl[i].a = af[i].first;
    } else
      afl[i].b = af[i].second - afl[i].a * af[i].first;
  }
  vector<pair<long double, long double> > pts;
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++) {
      pair<long double, long double> tmp = intersect(bfl[i], afl[j]);
      if (abs(tmp.first) <= w / 2.0 && abs(tmp.second) <= h / 2.0)
        pts.push_back(tmp);
    }
  sort(pts.begin(), pts.end(), cmp);
  long double area = 0;
  for (int i = 0; i < pts.size(); i++)
    area += pts[i].first * pts[(i + 1) % pts.size()].second -
            pts[(i + 1) % pts.size()].first * pts[i].second;
  area = abs(area) / 2.0;
  cout << fixed << setprecision(9) << area << endl;
  cin.ignore(), cin.get();
}
