#include <bits/stdc++.h>
using namespace std;
const long double pi = 4 * atan(1.0), eps = 1e-7;
struct line {
  long double A, B, C;
};
long double w, h, alp;
pair<long double, long double> p1[4], p2[4];
line l1[4], l2[4];
vector<pair<long double, long double> > H, Q;
vector<vector<pair<long double, long double> > > T(4);
line L(pair<long double, long double> t1, pair<long double, long double> t2) {
  line q;
  q.A = t2.second - t1.second;
  q.B = t1.first - t2.first;
  q.C = t2.first * t1.second - t1.first * t2.second;
  return q;
}
void inters(line l1, line l2) {
  long double D = l1.A * l2.B - l2.A * l1.B;
  if (abs(D) > eps) {
    long double xp = -(l1.C * l2.B - l2.C * l1.B) / D;
    long double yp = -(l1.A * l2.C - l2.A * l1.C) / D;
    H.push_back(make_pair(xp, yp));
  }
}
long double vect_prod(pair<long double, long double> t1,
                      pair<long double, long double> t2) {
  return (t1.first * t2.second - t2.first * t1.second);
}
int main() {
  cin >> w >> h >> alp;
  alp = alp * pi / 180;
  w = w / 2.0;
  h = h / 2.0;
  p1[0] = make_pair(w, h);
  p1[1] = make_pair(w, -h);
  p1[2] = make_pair(-w, -h);
  p1[3] = make_pair(-w, h);
  for (int i = 0; i < 4; i++) {
    long double xp = p1[i].first * cos(alp) - p1[i].second * sin(alp);
    long double yp = p1[i].first * sin(alp) + p1[i].second * cos(alp);
    p2[i] = make_pair(xp, yp);
  }
  for (int i = 0; i < 4; i++) {
    l1[i] = L(p1[i], p1[(i + 1) % 4]);
    l2[i] = L(p2[i], p2[(i + 1) % 4]);
  }
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++) inters(l1[i], l2[j]);
  for (int i = 0; i < H.size(); i++) {
    if (abs(H[i].first - w) < eps) T[0].push_back(make_pair(w, H[i].second));
    if (abs(H[i].second + h) < eps) T[1].push_back(make_pair(H[i].first, -h));
    if (abs(H[i].first + w) < eps) T[2].push_back(make_pair(-w, H[i].second));
    if (abs(H[i].second - h) < eps) T[3].push_back(make_pair(H[i].first, h));
  }
  sort(T[0].rbegin(), T[0].rend());
  sort(T[1].rbegin(), T[1].rend());
  sort(T[2].begin(), T[2].end());
  sort(T[3].begin(), T[3].end());
  for (int i = 0; i < T[0].size(); i++)
    if (T[0][i].second < h + eps && T[0][i].second > -h - eps)
      Q.push_back(T[0][i]);
  ;
  for (int i = 0; i < T[1].size(); i++)
    if (T[1][i].first < w + eps && T[1][i].first > -w - eps)
      Q.push_back(T[1][i]);
  ;
  for (int i = 0; i < T[2].size(); i++)
    if (T[2][i].second < h + eps && T[2][i].second > -h - eps)
      Q.push_back(T[2][i]);
  ;
  for (int i = 0; i < T[3].size(); i++)
    if (T[3][i].first < w + eps && T[3][i].first > -w - eps)
      Q.push_back(T[3][i]);
  ;
  long double ans = 0;
  int sz = Q.size();
  for (int i = 0; i < sz; i++) ans += vect_prod(Q[i], Q[(i + 1) % sz]);
  cout.precision(8);
  cout << fixed << abs(ans / 2.0);
}
