给定一个四面体 $OABC$,其顶点分别为 $O, A, B$ 和 $C$。
存在一个球体 $S_1$(红色,球心为 $Q_1$),内切于该四面体,与每个面 $OAB$(灰色)、$OAC$(棕色)、$OBC$(品红色)和 $ABC$(青色和黑色)的内侧相切。
存在第二个球体 $S_2$(绿色,球心为 $Q_2$),与 $OAB, OAC$ 和 $OBC$ 的(延伸)内侧相切,并与 $ABC$ 的外侧相切。(实际上,对于每个面,都存在这样一个球体,与该面的外侧相切,并与其余延伸面的内侧相切)。
存在第三个较大的球体 $S_3$(蓝色,球心为 $Q_3$),它通过顶点 $A, B$ 和 $C$,且分别与 $S_1$ 和 $S_2$ 相切,使得较小球体的外侧与最大球体的内侧相切(参见下方的图 1,图中展示了两个不同的视角。为了清晰起见,三角形 $ABC$ 在第一张图中为青色,在第二张图中为黑色):
图 1
下图展示了四面体和球体的几个视角。
图 2 展示了沿 $OA$ 方向的视角,左侧显示了与 $OAB$ 和 $OAC$ 相切的两个较小球体。沿 $BC$ 方向的视角显示了与 $OBC$ 相切且位于 $ABC$ 相对两侧的两个较小球体(右侧):
图 2
图 3 展示了 $S_3$ 通过 $A, B$ 和 $C$ 且与 $S_1$ 和 $S_2$ 相切的情况。左侧是垂直于三角形 $A, B, Q_3$ 平面的视角,显示了 $S_3$ 通过 $A$ 和 $B$。中间是垂直于三角形 $A, C, Q_3$ 平面的视角,显示了 $S_3$ 通过 $A$ 和 $C$。右侧是垂直于三角形 $Q_1, Q_2, Q_3$(三个球体的球心)平面的视角,显示了 $S_1$ 和 $S_2$ 与 $S_3$ 的内侧相切。
图 3
编写一个程序,输入顶点 $O, A, B$ 和 $C$,计算大球体的球心和半径(这需要先求出另外两个球体)。
$O$ 为原点 $(0,0,0)$。$A$ 位于正 $x$ 轴上 $(Ax,0,0)$,$B$ 位于 $xy$ 平面上 $(Bx,By,0)$,$C$ 位于第一卦限 $(Cx,Cy,Cz)$。$Ax, By$ 和 $Cz$ 严格大于零,其余坐标值非负。
输入格式
输入包含一行,按顺序给出六个双精度浮点数 $Ax, Bx, By, Cx, Cy$ 和 $Cz$(如上所述),其中 $(0 < Ax, By, Cz \le 10)$ 且 $(0 \le Bx, Cx, Cy \le 10)$。
输出格式
输出一行,包含四个保留四位小数的浮点数:大球体的 $center_x, center_y, center_z$ 和 $radius$。
样例
样例输入 1
2 3 2 3 1 4
样例输出 1
2.8563 0.8218 1.8305 2.1816
样例输入 2
1 0 2 0 0 3
样例输出 2
1.0000 1.2500 1.6667 2.0833