#include <bits/stdc++.h>
using namespace std;
const double eps = 1.0e-11;
const double pi = acos(-1.0);
struct point {
  double x, y;
  point() {}
  point(double a, double b) : x(a), y(b) {}
  void rot(double alpha) {
    double nx = x * cos(alpha) - y * sin(alpha);
    double ny = x * sin(alpha) + y * cos(alpha);
    x = nx, y = ny;
  }
  double dist(point a) {
    return sqrt(((x - a.x) * (x - a.x)) + ((y - a.y) * (y - a.y)));
  }
};
double area(point a, point b, point c) {
  double x = a.dist(b);
  double y = b.dist(c);
  double z = a.dist(c);
  double p = (x + y + z) / 2;
  return sqrt(p * (p - x) * (p - y) * (p - z));
}
int main() {
  double w, h, alpha;
  cin >> w >> h >> alpha;
  if (alpha == 0 || alpha == 180) {
    printf("%.7lf", w * h);
    return 0;
  }
  if (h > w) {
    swap(h, w);
  }
  if (alpha > 90) alpha = 180 - alpha;
  alpha = alpha * pi / 180;
  double res;
  if (alpha < 2 * atan(h / w)) {
    point p1(w / 2, -h / 2);
    point p2(-w / 2, -h / 2);
    p1.rot(alpha);
    p2.rot(alpha);
    double x = w / 2;
    point q1(x, (x - p1.x) / (p2.x - p1.x) * (p2.y - p1.y) + p1.y);
    double y = -h / 2;
    point q2((y - p1.y) / (p2.y - p1.y) * (p2.x - p1.x) + p1.x, y);
    res = w * h - 2 * area(q1, q2, point(w / 2, -h / 2));
    res -= p1.dist(q1) * p1.dist(q1) / tan(alpha);
  } else {
    point p1(w / 2, -h / 2);
    point p2(w / 2, h / 2);
    point p3(-w / 2, h / 2);
    point p4(-w / 2, -h / 2);
    p1.rot(alpha);
    p2.rot(alpha);
    p3.rot(alpha);
    p4.rot(alpha);
    double y = h / 2;
    point q1((y - p1.y) / (p4.y - p1.y) * (p4.x - p1.x) + p1.x, y);
    point q2((y - p2.y) / (p3.y - p2.y) * (p3.x - p2.x) + p2.x, y);
    res = w * h - 2 * area(q1, q2, p2) - 2 * area(p1, p2, q1);
  }
  printf("%.7lf\n", res);
  return 0;
}
