#include <bits/stdc++.h>
using namespace std;
const int N = 300000;
const int M = 300000;
const double eps = 1e-9;
const double pi = 3.141592653;
struct node {
  double x, y;
} poi[N], tmp1, tmp2, zero, tpoi[N];
struct SEG {
  node sou, tar;
  double angle;
} seg[M];
deque<SEG> deq;
int Test, n, cnt, flag;
double tmp, s;
double dot(node a, node b) { return a.x * b.x + a.y * b.y; }
double cross(node a, node b, node c) {
  return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
}
node inter(SEG a, SEG b) {
  double s1, s2, ts;
  s1 = cross(a.sou, a.tar, b.sou);
  s2 = cross(a.sou, a.tar, b.tar);
  ts = s1 - s2;
  if (fabs(ts) < eps) {
    tmp1.x = 10001;
    tmp1.y = 10001;
    return tmp1;
  }
  tmp1.x = b.sou.x * (-s2) / ts + b.tar.x * s1 / ts;
  tmp1.y = b.sou.y * (-s2) / ts + b.tar.y * s1 / ts;
  return tmp1;
}
bool cmp(const SEG &a, const SEG &b) {
  if (fabs(a.angle - b.angle) < eps)
    return cross(a.sou, a.tar, b.sou) < 0;
  else
    return a.angle < b.angle;
}
void Half_Plane_Intersection() {
  deq.clear();
  deq.push_front(seg[0]);
  int tt = 1;
  while (fabs(seg[tt].angle - seg[tt - 1].angle) < eps) ++tt;
  deq.push_front(seg[tt]);
  for (int i = tt + 1; i < n; ++i)
    if (fabs(seg[i].angle - seg[i - 1].angle) > eps) {
      while (deq.size() >= 2 &&
             cross(seg[i].sou, seg[i].tar,
                   inter(*deq.begin(), *(deq.begin() + 1))) < -eps)
        deq.pop_front();
      while (deq.size() >= 2 &&
             cross(seg[i].sou, seg[i].tar,
                   inter(*(deq.end() - 1), *(deq.end() - 2))) < -eps)
        deq.pop_back();
      deq.push_front(seg[i]);
    }
  while (deq.size() > 2 &&
         cross((deq.end() - 1)->sou, (deq.end() - 1)->tar,
               inter(*(deq.begin()), *(deq.begin() + 1))) < -eps)
    deq.pop_front();
  while (deq.size() > 2 &&
         cross(deq.begin()->sou, deq.begin()->tar,
               inter(*(deq.end() - 1), *(deq.end() - 2))) < -eps)
    deq.pop_back();
  cnt = 0;
  for (deque<SEG>::iterator it = deq.begin(); it != deq.end(); ++it) {
    deque<SEG>::iterator itt = it + 1;
    if (itt == deq.end()) itt = deq.begin();
    tpoi[cnt++] = inter(*it, *itt);
  }
  s = 0;
  for (int i = 0; i < cnt; ++i)
    s += tpoi[i].x * tpoi[(i + 1) % cnt].y - tpoi[(i + 1) % cnt].x * tpoi[i].y;
  if (s == 0 && cnt <= 2)
    puts("0.0");
  else
    printf("%.6lf\n", s / -2 + eps);
}
void print(SEG tmp) {
  cout << tmp.sou.x << " " << tmp.sou.y << "  ->  " << tmp.tar.x << " "
       << tmp.tar.y << endl;
}
void work() {
  double w, h, angle;
  cin >> w >> h >> angle;
  angle /= 180;
  angle *= pi;
  n = 0;
  seg[n].sou.x = -w / 2;
  seg[n].sou.y = h / 2;
  seg[n].tar.x = w / 2;
  seg[n].tar.y = h / 2;
  ++n;
  seg[n].sou.x = w / 2;
  seg[n].sou.y = h / 2;
  seg[n].tar.x = w / 2;
  seg[n].tar.y = -h / 2;
  ++n;
  seg[n].tar.x = -w / 2;
  seg[n].tar.y = h / 2;
  seg[n].sou.x = -w / 2;
  seg[n].sou.y = -h / 2;
  ++n;
  seg[n].tar.x = -w / 2;
  seg[n].tar.y = -h / 2;
  seg[n].sou.x = w / 2;
  seg[n].sou.y = -h / 2;
  ++n;
  double x1, x2, x3, x4, y1, y2, y3, y4;
  x1 = (-w / 2) * cos(angle) - (h / 2) * sin(angle);
  y1 = (-w / 2) * sin(angle) + (h / 2) * cos(angle);
  x2 = (w / 2) * cos(angle) - (h / 2) * sin(angle);
  y2 = (w / 2) * sin(angle) + (h / 2) * cos(angle);
  x3 = (w / 2) * cos(angle) - (-h / 2) * sin(angle);
  y3 = (w / 2) * sin(angle) + (-h / 2) * cos(angle);
  x4 = (-w / 2) * cos(angle) - (-h / 2) * sin(angle);
  y4 = (-w / 2) * sin(angle) + (-h / 2) * cos(angle);
  seg[n].sou.x = x1;
  seg[n].sou.y = y1;
  seg[n].tar.x = x2;
  seg[n].tar.y = y2;
  ++n;
  seg[n].tar.x = x4;
  seg[n].tar.y = y4;
  seg[n].sou.x = x3;
  seg[n].sou.y = y3;
  ++n;
  seg[n].tar.x = x1;
  seg[n].tar.y = y1;
  seg[n].sou.x = x4;
  seg[n].sou.y = y4;
  ++n;
  seg[n].sou.x = x2;
  seg[n].sou.y = y2;
  seg[n].tar.x = x3;
  seg[n].tar.y = y3;
  ++n;
  for (int i = 0; i < n; ++i) {
    node tmp = seg[i].sou;
    seg[i].sou = seg[i].tar;
    seg[i].tar = tmp;
  }
  for (int i = 0; i < n; ++i)
    seg[i].angle =
        atan2(seg[i].tar.y - seg[i].sou.y, seg[i].tar.x - seg[i].sou.x);
  sort(seg, seg + n, cmp);
  Half_Plane_Intersection();
}
int main() {
  work();
  return 0;
}
