题意

三维空间有一个点,它以每秒增加单位体积的速率不断膨胀,问什么时候能碰到一个给定的面。

思路

本题在高数大佬+室友+队友的帮助下采用向量解决。

题目给定的是三个点来确定一个面。那么由三个点可以得到两个向量:

a1=x2-x1;a2=y2-y1;a3=z2-z1
b1=x3-x1;b2=y3-y1;b3=z3-z1

由这两个向量的叉积可以得到平面的方程

a=a2*b3-a3*b2
b=a3*b1-a1*b3
c=a1*b2-a2*b1
d=-(a*x1+b*y1+c*z1)

然后根据点到平面的距离公式

就可以求出球心到平面的距离(直径)

由球的体积公式可得所需要的

如果没听懂去文末复习高数

solution

import math
L=int(input())
x,y,z=map(int,input().split())
x1,y1,z1=map(int,input().split())
x2,y2,z2=map(int,input().split())
x3,y3,z3=map(int,input().split())
a1=x2-x1;a2=y2-y1;a3=z2-z1
b1=x3-x1;b2=y3-y1;b3=z3-z1
a=a2*b3-a3*b2
b=a3*b1-a1*b3
c=a1*b2-a2*b1
d=-(a*x1+b*y1+c*z1)
R=(abs(a*x+b*y+c*z+d)/2)/math.sqrt(a*a+b*b+c*c)
t=4/3*R*R*R*math.pi/L
print(t)

高数

图片说明

图片说明