#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y;
} p1[15], p2[15], p3[15];
bool Cmd(double a, double b) {
  if (fabs(a - b) < 1e-8) return true;
  return a < b;
}
double multi(point a, point b, point c) {
  return (b.x - a.x) * (c.y - b.y) - (c.x - b.x) * (b.y - a.y);
}
int cross(point a, point b, point c, point d, point &o) {
  double A1 = a.y - b.y, B1 = b.x - a.x, C1 = a.x * b.y - a.y * b.x;
  double A2 = c.y - d.y, B2 = d.x - c.x, C2 = c.x * d.y - c.y * d.x;
  if (fabs(A2 * B1 - A1 * B2) < 1e-8) return 0;
  o.y = (A1 * C2 - A2 * C1) / (A2 * B1 - A1 * B2);
  if (fabs(A1) < 1e-8)
    o.x = (-C2 - B2 * o.y) / A2;
  else
    o.x = (-C1 - B1 * o.y) / A1;
  if (Cmd(min(c.y, d.y), o.y) && Cmd(o.y, max(c.y, d.y)) &&
      Cmd(min(c.x, d.x), o.x) && Cmd(o.x, max(c.x, d.x)))
    return 1;
  return 0;
}
int main() {
  int tp, i, j;
  double w, h, a;
  while (~scanf("%lf%lf%d", &w, &h, &tp)) {
    double S = w * h;
    if (tp == 0 || tp == 180) {
      printf("%.8f\n", S);
      continue;
    }
    a = 1.0 * tp * acos(-1.0) / 180;
    p1[0].x = -w / 2;
    p1[0].y = -h / 2;
    p1[1].x = w / 2;
    p1[1].y = -h / 2;
    p1[2].x = w / 2;
    p1[2].y = h / 2;
    p1[3].x = -w / 2;
    p1[3].y = h / 2;
    for (i = 0; i < 4; i++) {
      p2[i].x = -(p1[i].y * sin(a) - p1[i].x * cos(a));
      p2[i].y = p1[i].x * sin(a) + p1[i].y * cos(a);
    }
    int k = 0;
    p1[4] = p1[0];
    p2[4] = p2[0];
    for (i = 0; i < 4; i++) {
      int f = -1, s;
      for (j = 0; j < 4; j++) {
        if (cross(p1[i], p1[i + 1], p2[j], p2[j + 1], p3[k])) {
          ++k;
          if (f < 0)
            f = j;
          else {
            s = j;
            break;
          }
        }
      }
      if (f == 0 && s == 3) {
        f = 3;
        s = 4;
      }
      if (f == s - 1) {
        S -= fabs(multi(p3[k - 1], p3[k - 2], p2[s])) / 2;
      }
    }
    if (k == 4) {
      S = fabs(multi(p3[0], p3[1], p3[2]));
    }
    printf("%.8f\n", S);
  }
  return 0;
}
