四面体体积求法
四面体(三棱锥)体积 :
设
有:
不过这是有向的。如果知道那四个顶点,用这个公式即可求出体积。
如果不知道四点仅知道6条边长,就得用下面的方法——欧拉四面体公式
写成行列式:
那么有:
转置:
行列式乘法:
其中,
因为:
所以:
有:
进一步简化:
题目:
HDU 1411
#include #include using namespace std;int main(){ //freopen("cin.txt","r",stdin); double p,q,l,r,m,n; while(~scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&l,&r,&m,&n)){ double part1=p*p+q*q-r*r; //p*p*q*q*l*l; double part2=q*q+l*l-n*n; double part3=l*l+p*p-m*m; double ans=4*p*p*q*q*l*l+part1*part2*part3-q*q*part3*part3-l*l*part1*part1 -p*p*part2*part2; ans=sqrt(ans/144); printf("%.4lf\n",ans); } return 0;}
POJ 2208
:
有:
S=
证明来自:
judge?
#include #include #include using namespace std;int main(){ //freopen("cin.txt","r",stdin); double p,q,l,r,m,n; while(~scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&l,&r,&m,&n)){ double A=acos((p*p+q*q-r*r)/(2*p*q)); double B=acos((p*p+l*l-m*m)/(2*p*l)); double R=acos((q*q+l*l-n*n)/(2*q*l)); double P=(A+B+R)/2; double ans=p*q*l/3*sqrt(sin(P)*sin(P-A)*sin(P-B)*sin(P-R)); printf("%.4lf\n",ans); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~