#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double EPS = 1e-9;
struct point {
  double x, y;
  point() {}
  point(double _x, double _y) : x(_x), y(_y) {}
  const point operator+(const point &other) const {
    return point(x + other.x, y + other.y);
  }
  const point operator-(const point &other) const {
    return point(x - other.x, y - other.y);
  }
  const point operator*(double k) const { return point(x * k, y * k); }
};
struct line {
  double a, b, c;
};
void pointsToLine(point p1, point p2, line &l) {
  if (fabs(p1.x - p2.x) < EPS) {
    l.a = 1.0;
    l.b = 0.0;
    l.c = -p1.x;
  } else {
    l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
    l.b = 1.0;
    l.c = -(double)(l.a * p1.x) - p1.y;
  }
}
bool parallel(line l1, line l2) {
  return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}
bool intersect(line l1, line l2, point &p) {
  if (parallel(l1, l2)) return false;
  p.x = (l2.b * l1.c - l1.b * l2.c) / (l2.a * l1.b - l1.a * l2.b);
  if (fabs(l1.b) > EPS)
    p.y = -(l1.a * p.x + l1.c);
  else
    p.y = -(l1.a * p.x + l2.c);
  return true;
}
point my_rotate(point p, double theta) {
  double rad = theta * PI / 180.0;
  return point(p.x * cos(rad) - p.y * sin(rad),
               p.x * sin(rad) + p.y * cos(rad));
}
double dot(point a, point b) { return a.x * b.x + a.y * b.y; }
double norm_sq(point a) { return a.x * a.x + a.y * a.y; }
double angle(point a, point o, point b) {
  point oa = a - o, ob = b - o;
  return acos(dot(oa, ob) / sqrt(norm_sq(oa) * norm_sq(ob)));
}
double area(const vector<point> &P) {
  double result = 0.0, x1, y1, x2, y2;
  for (int i = 0; i < (int)P.size() - 1; ++i) {
    x1 = P[i].x;
    x2 = P[i + 1].x;
    y1 = P[i].y;
    y2 = P[i + 1].y;
    result += (x1 * y2 - x2 * y1);
  }
  return fabs(result) / 2.0;
}
int comp(double a, double b) {
  if (fabs(a - b) < EPS) return 0;
  return a > b ? 1 : -1;
}
int main() {
  double w, h, theta;
  scanf("%lf %lf %lf", &w, &h, &theta);
  if (w < h) swap(w, h);
  vector<point> A;
  A.push_back(point(-w / 2, h / 2));
  A.push_back(point(-w / 2, -h / 2));
  A.push_back(point(w / 2, -h / 2));
  A.push_back(point(w / 2, h / 2));
  vector<point> B;
  for (int i = 0; i < 4; ++i) B.push_back(my_rotate(A[i], theta));
  double total = w * h;
  if (theta < 0.5 || theta > 179.5) {
  } else if (comp(angle(A[2], point(0, 0), A[3]), theta * PI / 180.0) > 0) {
    line l1, l2, l3;
    pointsToLine(B[1], B[2], l1);
    pointsToLine(B[2], B[3], l2);
    pointsToLine(A[2], A[3], l3);
    point p1, p2;
    intersect(l1, l3, p1);
    intersect(l2, l3, p2);
    vector<point> aux;
    aux.push_back(B[2]);
    aux.push_back(p2);
    aux.push_back(p1);
    aux.push_back(B[2]);
    total -= 2 * area(aux);
    pointsToLine(B[3], B[2], l1);
    pointsToLine(B[0], B[3], l2);
    pointsToLine(A[0], A[3], l3);
    intersect(l1, l3, p1);
    intersect(l2, l3, p2);
    aux.clear();
    aux.push_back(B[3]);
    aux.push_back(p2);
    aux.push_back(p1);
    aux.push_back(B[3]);
    total -= 2 * area(aux);
  } else if (comp(angle(A[3], point(0, 0), A[0]), theta * PI / 180.0) < 0) {
    line l1, l2, l3;
    pointsToLine(B[1], B[2], l1);
    pointsToLine(B[2], B[3], l2);
    pointsToLine(A[0], A[3], l3);
    point p1, p2;
    intersect(l1, l3, p1);
    intersect(l2, l3, p2);
    vector<point> aux;
    aux.push_back(B[2]);
    aux.push_back(p2);
    aux.push_back(p1);
    aux.push_back(B[2]);
    total -= 2 * area(aux);
    pointsToLine(B[3], B[2], l1);
    pointsToLine(B[0], B[3], l2);
    pointsToLine(A[0], A[1], l3);
    intersect(l1, l3, p1);
    intersect(l2, l3, p2);
    aux.clear();
    aux.push_back(B[3]);
    aux.push_back(p2);
    aux.push_back(p1);
    aux.push_back(B[3]);
    total -= 2 * area(aux);
  } else {
    vector<point> aux;
    aux.push_back(B[2]);
    aux.push_back(B[3]);
    line l1, l2, l3;
    pointsToLine(B[3], B[0], l1);
    pointsToLine(A[0], A[3], l2);
    point p1;
    intersect(l1, l2, p1);
    aux.push_back(p1);
    pointsToLine(B[2], B[1], l1);
    pointsToLine(A[0], A[3], l2);
    intersect(l1, l2, p1);
    aux.push_back(p1);
    aux.push_back(B[2]);
    total -= 2 * area(aux);
  }
  printf("%.8lf\n", total);
  return 0;
}
