Cone Cut

Time Limit : 8 sec, Memory Limit : 65536 KB

Problem H: Cone Cut

Problem

この問題では3次元空間上のある点X とある点Y を通るような直線を直線XY と書く。

3次元空間上に円錐とその円錐内部の点P が与えられる。点P を通り円錐の底面に垂直な直線と円錐の底面との交点を点Q とする。この時、円錐の底面の中心をO とし、直線OQ と円錐の底面の円周との交点を、点Q に近い方から点A 、点B とする(ただし、点O と点Q が同一点のときは、点O を通る任意の直線と円錐の底面の円周との交点を点A 、点B とする。)。また、円錐の底面を含むような平面において、点O を通り、直線AB と垂直に交わる直線と円錐の底面の円周との交点を点C 、点D とする(ただし、点C と点D は入れ替えても問題ない)。

以下の図は、円錐の頂点方向から見た円錐の底面の図である。

円錐の頂点方向から見た円錐の底面の図

直線AP と直線BP の円錐との交点(直線AP の場合、点A でない方の交点を指す。直線BP も同様。)を点A' 、点B' とし、点A' と点B' を通り直線CD と平行な平面S で円錐を切断する。この時、切断後の頂点を含む図形の体積ともう一方の図形の体積を空白区切りで出力せよ。

Input

円錐の頂点のx 座標 y 座標 z 座標
円錐の底面の中心のx 座標 y 座標 z 座標 円錐の底面の半径
P x 座標 y 座標 z 座標

各行のそれぞれの値はスペース区切りで与えられる。

Constraint

入力の値はすべて整数であり、その絶対値は1000以下である。
円錐の高さとその底面の半径は1以上であり、点P と円錐の距離は10-5以上ある。

Output

切断後の頂点を含む図形の体積ともう一方の図形の体積を空白区切りで出力せよ。
ただし、10-5を超える誤差を含んではいけない。

Sample Input 1

0 0 10
0 0 0 4
0 0 1

Sample Output 1

91.769438 75.782170

Sample Input 2

0 0 10
0 0 0 4
1 1 1

Sample Output 2

84.050413 83.501195

Sample Input 3

0 0 0
8 9 10 5
1 1 1

Sample Output 3

0.071663 409.709196

Source: University of Aizu Programming Contest 2013 , Aizu Commpetitive Programming Camp 2013 Day 2, Japan, 2013-09-04