在三维空间中,有三个点 A、B 和 C。这三个点的坐标都是小于 1000 的整数。以 C 点为球心,固定了一个半径为 R 的实心球。A、B 两点与 C 点之间的直线距离,都大于该球的半径 R。
现在,要在 A、B 两点之间牵一条线,且要保证该线在实心球之外。请计算出这条线的最短长度是多少。
输入
输入的前三行分别包括三个整数,它们是 A、B、C 三点的坐标。第四行为球的半径 R。
输出
输出线的最短长度,小数点后保留两位有效数字。
测试输入 期待的输出
0 0 12↵ 19.71↵
12 0 0↵
10 0 10↵
10↵
正确的方法为:
设有一个球0,球外两点为A,B
已知三个点可以确定一个圆,故可以在圆0上计论
过A,B分别作一条与圆相切的直线,分别与圆交与C(A),D(B) ,则线段AC+线段BD+劣弧CD就是这个最小距离。