让我们制作一种形状奇特的甜点,它是一个巧克力环。
图 A.1. 由六个球体组成的巧克力环
环的形状由若干个大小相同的球体的并集组成,其中每个球体恰好与另外两个球体相交。
(a) 四个球体的并集 (b) (a) 中四个球体的四个交集
图 A.2. 由四个球体组成的巧克力环
你的任务是编写一个程序,给定球体的大小和位置,计算这些球体并集的总体积,即填充该环所需的巧克力总量。
[提示] 两个半径为 $r$ 的球体,当其球心距离 $d$ 小于 $2r$ 时会发生相交。已知其相交部分的体积为 $$\frac{2}{3}\pi(r - d/2)^2(2r + d/2)$$ 半径为 $r$ 的球体体积为 $4\pi r^3/3$。
输入格式
输入包含单个测试用例,格式如下:
$n \ r$ $x_1 \ y_1 \ z_1$ $\vdots$ $x_n \ y_n \ z_n$
$n$ 和 $r$ 为整数。$n$ 是球体的数量 ($4 \le n \le 100$)。所有球体具有相同的半径 $r$ ($2 \le r \le 100$)。$(x_k, y_k, z_k)$ 表示第 $k$ 个球体球心的坐标 ($k = 1, \dots, n$)。所有 $x_k, y_k, z_k$ 均为 $-100$ 到 $100$ 之间的整数。
对于 $1 \le k < n$,第 $k$ 个球体与第 $k+1$ 个球体相交。第 $1$ 个球体与第 $n$ 个球体也相交。除此之外,没有其他球体对相交。
输出格式
输出一行,表示球体并集的体积。输出的相对误差应在 $10^{-7}$ 以内。
样例
样例输入 1
6 9 20 0 10 20 10 0 10 20 0 0 20 10 0 10 20 10 0 20
样例输出 1
17149.528141
样例输入 2
4 12 10 10 0 10 -10 0 -10 -10 0 -10 10 0
样例输出 2
27813.56696
样例输入 3
6 9 23 3 13 20 10 0 10 20 0 3 23 13 0 10 20 10 0 20
样例输出 3
17470.837758
样例输入 4
4 2 0 0 0 3 0 0 3 3 0 0 3 0
样例输出 4
122.52211349
样例输入 5
8 70 100 100 0 0 100 0 -100 100 0 -100 0 0 -100 -100 0 0 -100 0 100 -100 0 100 0 0
样例输出 5
10220648.1