#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
double up[4], dw[4], lf[4], rt[4], pi = acos(-1), lencp;
pair<double, double> cp;
vector<pair<double, double> > v;
bool where(pair<double, double> x) {
  pair<double, double> vx = make_pair(-2 * cp.first, -2 * cp.second);
  pair<double, double> vy = make_pair(cp.first + x.first, cp.second + x.second);
  if (vx.first * vy.second - vx.second * vy.first > 0) return 0;
  return 1;
}
bool cmp(pair<double, double> x, pair<double, double> y) {
  double dotx = x.first * cp.first + cp.second * x.second;
  double doty = y.first * cp.first + cp.second * y.second;
  double lenx = sqrt(x.first * x.first + x.second * x.second);
  double leny = sqrt(y.first * y.first + y.second * y.second);
  double degx = acos(dotx / lenx / lencp);
  double degy = acos(doty / lencp / leny);
  if (x.first == cp.first && x.second == cp.second) degx = 0;
  if (y.first == cp.first && y.second == cp.second) degy = 0;
  if (x.first == -cp.first && x.second == -cp.second) degx = pi;
  if (y.first == -cp.first && y.second == -cp.second) degy = pi;
  if (where(x)) degx = pi + pi - degx;
  if (where(y)) degy = pi + pi - degy;
  if (degx < degy) return 1;
  return 0;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  double w, h, a;
  cin >> w >> h >> a;
  if (a == 0) {
    cout << h * w;
    return 0;
  }
  if (a == 90) {
    cout << min(h * h, w * w);
    return 0;
  }
  double hw = w / 2, hh = h / 2, tn = tan(a / 180 * pi), cs = cos(a / 180 * pi);
  up[0] = (hh - hh / cs) / tn;
  if (abs(up[0]) <= hw) v.push_back({up[0], hh});
  rt[3] = (-hw - hw / cs) / (-tn);
  if (abs(rt[3]) <= hh) v.push_back({-hw, rt[3]});
  dw[2] = tn * hw - hh / cs;
  if (abs(dw[2]) <= hh) v.push_back({hw, dw[2]});
  lf[3] = (-hw + hw / cs) / (-tn);
  if (abs(lf[3]) <= hh) v.push_back({-hw, lf[3]});
  rt[0] = -tn * hh + hw / cs;
  if (abs(rt[0]) <= hw) v.push_back({rt[0], hh});
  rt[2] = (hw - hw / cs) / (-tn);
  if (abs(rt[2]) <= hh) v.push_back({hw, rt[2]});
  dw[1] = (-hh + hh / cs) / tn;
  if (abs(dw[1]) <= hw) v.push_back({dw[1], -hh});
  lf[1] = -tn * (-hh) - hw / cs;
  if (abs(lf[1]) <= hw) v.push_back({lf[1], -hh});
  up[3] = tn * (-hw) + hh / cs;
  if (abs(up[3]) <= hh) v.push_back({-hw, up[3]});
  up[1] = (-hh - hh / cs) / tn;
  if (abs(up[1]) <= hw) v.push_back({up[1], -hh});
  rt[1] = -tn * (-hh) + hw / cs;
  if (abs(rt[1]) <= hw) v.push_back({rt[1], -hh});
  dw[3] = tn * (-hw) - hh / cs;
  if (abs(dw[3]) <= hh) v.push_back({-hw, dw[3]});
  dw[0] = (hh + hh / cs) / tn;
  if (abs(dw[0]) <= hw) v.push_back({dw[0], hh});
  lf[0] = -tn * hh - hw / cs;
  if (abs(lf[0]) <= hw) v.push_back({lf[0], hh});
  lf[2] = (hw + hw / cs) / (-tn);
  if (abs(lf[2]) <= hh) v.push_back({hw, lf[2]});
  up[2] = tn * hw + hh / cs;
  if (abs(up[2]) <= hh) v.push_back({hw, up[2]});
  double ans = w * h;
  cp = v[0];
  lencp = sqrt(cp.first * cp.first + cp.second * cp.second);
  sort(v.begin(), v.end(), cmp);
  if (v.size() == 8) {
    for (int i = 0; i < 8; i++) {
      int j = (i + 1) % 8;
      double xx = v[i].first - v[j].first, yy = v[i].second - v[j].second;
      double len = sqrt(xx * xx + yy * yy);
      if (i % 2)
        ans -=
            abs(cos(a * pi / 180.0)) * abs(sin(a * pi / 180.0)) * len * len / 2;
    }
  } else {
    double difx = v[2].first - v[0].first, dify = v[2].second - v[0].second;
    double lenx = sqrt(difx * difx + dify * dify);
    difx = v[3].first - v[1].first, dify = v[3].second - v[1].second;
    double leny = sqrt(difx * difx + dify * dify);
    ans = lenx * leny / 2;
  }
  cout << setprecision(15) << ans;
}
