图片说明

根据发射距离R的不同,可分为四种情况

  1. 碰不到
  2. 四个圆
  3. 圆和三角的交*4
  4. 正四面体的全部内表面

因为第三种情况忘记*4浪费了一个晚上。

图片说明

具体来说就是计算小三角形的面积,再加上一个最小的扇形面积。

重合部分的面积等于

from math import sqrt, acos, pi
a, R = map(float, input().split())
d = sqrt(6) * a / 12  #中心到面的距离
r = sqrt(R * R - d * d) if d < R else 0  #三角形上的圆的半径
if R <= d: ans = 0  #碰不到
elif r <= a / (sqrt(3) * 2):  #四个圆
    ans = 4 * pi * (R * R - d * d)
elif R >= a * sqrt(6) / 4:  #全覆盖
    ans = a * a * sqrt(3)
else:  #切掉
    DF = a / (2 * sqrt(3))
    GF = sqrt(r * r - DF * DF)  #求底面三角形 半底长
    deg = pi / 3 - acos(DF / r)  # 小扇形的弧度
    ans = GF * DF * 3
    shan = deg * 0.5 * r * r
    ans += 6 * shan
    ans *= 4  #就漏了这一句
print(ans)