#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <algorithm>
#include <functional>
#include <utility>
#include <bitset>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstdio>
using namespace std;
#define REP(i,n) for((i)=0;(i)<(int)(n);(i)++)
#define snuke(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
double func(double w, double h, double theta){
double bound = atan2(h, w) * 2.0;
if(theta > bound) return 4.0 * h * h / sin(theta);
double ans = 4.0 * w * h;
// d1 * (1.0 + cos(theta)) + d2 * sin(theta) = 2.0 * w
// d1 * sin(theta) + d2 * (1.0 + cos(theta)) = 2.0 * h
double d1 = (2.0 * w * (1.0 + cos(theta)) - 2.0 * h * sin(theta)) / ((1.0 + cos(theta)) * (1.0 + cos(theta)) - sin(theta) * sin(theta));
double d2 = (2.0 * h * (1.0 + cos(theta)) - 2.0 * w * sin(theta)) / ((1.0 + cos(theta)) * (1.0 + cos(theta)) - sin(theta) * sin(theta));
ans -= d1 * d1 * sin(theta) * cos(theta);
ans -= d2 * d2 * sin(theta) * cos(theta);
return ans;
}
int main(void){
int w,h,alpha;
cin >> w >> h >> alpha;
if(alpha > 90) alpha = 180 - alpha;
double theta = alpha / 180.0 * acos(-1.0);
if(w < h) swap(w, h);
double ans = func(w / 2.0, h / 2.0, theta);
printf("%.9f\n", ans);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8Y3N0ZGlvPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgUkVQKGksbikgZm9yKChpKT0wOyhpKTwoaW50KShuKTsoaSkrKykKI2RlZmluZSBzbnVrZShjLGl0cikgZm9yKF9fdHlwZW9mKChjKS5iZWdpbigpKSBpdHI9KGMpLmJlZ2luKCk7aXRyIT0oYykuZW5kKCk7aXRyKyspCgpkb3VibGUgZnVuYyhkb3VibGUgdywgZG91YmxlIGgsIGRvdWJsZSB0aGV0YSl7CiAgICBkb3VibGUgYm91bmQgPSBhdGFuMihoLCB3KSAqIDIuMDsKICAgIGlmKHRoZXRhID4gYm91bmQpIHJldHVybiA0LjAgKiBoICogaCAvIHNpbih0aGV0YSk7CiAgICBkb3VibGUgYW5zID0gNC4wICogdyAqIGg7CiAgICAvLyBkMSAqICgxLjAgKyBjb3ModGhldGEpKSArIGQyICogc2luKHRoZXRhKSA9IDIuMCAqIHcKICAgIC8vIGQxICogc2luKHRoZXRhKSArIGQyICogKDEuMCArIGNvcyh0aGV0YSkpID0gMi4wICogaAogICAgZG91YmxlIGQxID0gKDIuMCAqIHcgKiAoMS4wICsgY29zKHRoZXRhKSkgLSAyLjAgKiBoICogc2luKHRoZXRhKSkgLyAoKDEuMCArIGNvcyh0aGV0YSkpICogKDEuMCArIGNvcyh0aGV0YSkpIC0gc2luKHRoZXRhKSAqIHNpbih0aGV0YSkpOwogICAgZG91YmxlIGQyID0gKDIuMCAqIGggKiAoMS4wICsgY29zKHRoZXRhKSkgLSAyLjAgKiB3ICogc2luKHRoZXRhKSkgLyAoKDEuMCArIGNvcyh0aGV0YSkpICogKDEuMCArIGNvcyh0aGV0YSkpIC0gc2luKHRoZXRhKSAqIHNpbih0aGV0YSkpOwogICAgYW5zIC09IGQxICogZDEgKiBzaW4odGhldGEpICogY29zKHRoZXRhKTsKICAgIGFucyAtPSBkMiAqIGQyICogc2luKHRoZXRhKSAqIGNvcyh0aGV0YSk7CiAgICByZXR1cm4gYW5zOwp9CgppbnQgbWFpbih2b2lkKXsKICAgIGludCB3LGgsYWxwaGE7CiAgICAKICAgIGNpbiA+PiB3ID4+IGggPj4gYWxwaGE7CiAgICAKICAgIGlmKGFscGhhID4gOTApIGFscGhhID0gMTgwIC0gYWxwaGE7CiAgICBkb3VibGUgdGhldGEgPSBhbHBoYSAvIDE4MC4wICogYWNvcygtMS4wKTsKICAgIGlmKHcgPCBoKSBzd2FwKHcsIGgpOwogICAgCiAgICBkb3VibGUgYW5zID0gZnVuYyh3IC8gMi4wLCBoIC8gMi4wLCB0aGV0YSk7CiAgICBwcmludGYoIiUuOWZcbiIsIGFucyk7CiAgICAKICAgIHJldHVybiAwOwp9