#include <bits/stdc++.h>
using namespace std;
const int N = 20;
const double PI = acos(-1);
double w, h, alpha;
double ans;
int n, m;
struct Point {
  double x, y;
  Point(double _x = 0, double _y = 0) : x(_x), y(_y) {}
  Point operator-(const Point &z) const { return Point(x - z.x, y - z.y); }
  double cross(const Point &z) const { return x * z.y - y * z.x; }
  Point rotate(double a) {
    return Point(x * cos(a) + y * sin(a), -x * sin(a) + y * cos(a));
  }
} p[N], q[N], pt[N];
inline int fi(double x) { return x < -1e-8 ? -1 : x > 1e-8; }
inline Point intersect(const Point &a, const Point &b, const Point &x,
                       const Point &y) {
  double u = (a - x).cross(b - x), v = (b - y).cross(a - y);
  Point ret;
  ret.x = (v * x.x + u * y.x) / (u + v);
  ret.y = (v * x.y + u * y.y) / (u + v);
  return ret;
}
inline void cut(const Point &a, const Point &b) {
  int cnt = 0;
  for (int i = 1; i <= m; i++) {
    if (fi((a - p[i]).cross(b - p[i])) >= 0)
      q[++cnt] = p[i];
    else {
      if (fi((a - p[i - 1]).cross(b - p[i - 1])) > 0)
        q[++cnt] = intersect(a, b, p[i], p[i - 1]);
      if (fi((a - p[i + 1]).cross(b - p[i + 1])) > 0)
        q[++cnt] = intersect(a, b, p[i], p[i + 1]);
    }
  }
  for (int i = 1; i <= cnt; i++) p[i] = q[i];
  p[0] = p[cnt];
  p[cnt + 1] = p[1];
  m = cnt;
}
inline void solve() {
  for (int i = 1; i <= n; i++) pt[i] = p[i].rotate(alpha / 180 * PI);
  p[0] = p[n];
  p[n + 1] = p[1];
  pt[n + 1] = pt[1];
  m = n;
  for (int i = 1; i <= n; i++) cut(pt[i], pt[i + 1]);
}
int main() {
  scanf("%lf%lf%lf", &w, &h, &alpha);
  p[1].x = -w / 2, p[1].y = -h / 2;
  p[2].x = w / 2, p[2].y = -h / 2;
  p[3].x = w / 2, p[3].y = h / 2;
  p[4].x = -w / 2, p[4].y = h / 2;
  n = 4;
  solve();
  for (int i = 2; i < m; i++) ans += (p[i] - p[1]).cross(p[i + 1] - p[1]);
  printf("%.9lf\n", ans / 2);
  return 0;
}
