1 /*
2 * 题目要求:求三角形内接圆面积与外接圆面积之比
3 * 内切圆半径:r=2*s/(a+b+c) ;
4 * 外接圆半径为 R=(a*b*c)/(s*4);
5 * 对于一般的三角形,内切圆半径公式如下:
6 * r=sqrt[(p-a)(p-b)(p-c)/p]
7 * 在直角三角形的内切圆中,有这样两个简便公式:
8 * 1、两直角边相加的和减去斜边后除以2,得数是内切圆的半径。
9 * 2、两直角边乘积除以直角三角形周长,得数是内切圆的半径。
10 * 1、r=(a+b-c)/2(注:s是Rt△的面积,a, b是Rt△的2个直角边,c是斜边)
11 * 2、r=ab/ (a+b+c)
12 */
13
14 #include <cmath>
15 #include <cstdio>
16 #include <cstdlib>
17 #include <iostream>
18
19 using namespace std;
20
21 const double PI = 3.14159265;
22
23 struct point {
24 double x;
25 double y;
26 double z;
27 }A, B, C;
28
29 double dis(point A, point B) {
30 return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)+(A.z-B.z)*(A.z-B.z));
31 }
32
33 double solve() {
34 double a = dis(A, B);
35 double b = dis(A, C);
36 double c = dis(B, C);
37 double p = (a + b + c) / 2;
38 double r1 = sqrt((p-a)*(p-b)*(p-c)/p); //外切圆半径
39 double area1 = PI * r1 * r1;
40 double area = sqrt((p-a)*(p-b)*(p-c)*p);
41 double r2 = a * b * c / (area * 4); //内接圆半径
42 double area2 = PI * r2 * r2;
43 return area1 / area2;
44 }
45
46 int main() {
47 while (scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf", &A.x, &A.y, &A.z, &B.x, &B.y, &B.z, &C.x, &C.y, &C.z) != EOF) {
48 double ans = solve();
49 printf ("%.3lf\n", ans);
50 }
51 return 0;
52 }