Fancy Mouse
- -|||
题目意思很明确,知道四面体六条棱长求体积。
数学问题,我们把四面体四个顶点放到坐标系中,并把A点设为原点,B坐标(x1,0,0),C坐标(x2,y2,0),D坐标(x3,y3,z3)。由于6条边,可以列出6个方程,因此可以解出x1,x2,y2,x3,y3,z3。而z3就是ABC面上的高。把ABC面积乘以z3再除以3就是答案了。
#include<iostream>
#include
<iomanip>
#include
<cmath>
using namespace std;

int main()
{
    
long double AB,AC,AD,BC,BD,CD;
    
long double x2,y2_2,x3,y3_2,z3;
    
long double AB_2,AC_2,AD_2;
    
long double S,V;
    
while(cin>>AB>>AC>>AD>>BC>>BD>>CD)
    
{
        AB_2 
= AB*AB;
        AC_2 
= AC*AC;
        AD_2 
= AD*AD;
        x2 
= (AC_2 - BC*BC + AB_2) / 2 / AB;
        x3 
= (AD_2 - BD*BD + AB_2) / 2 / AB;
        y2_2 
= AC_2 - x2*x2;
        S 
= AD_2 - CD*CD + AC_2 - 2*x2*x3;
        y3_2 
=  S*/ 4 / y2_2;
        z3 
= sqrtl(AD_2 - x3*x3 - y3_2);
        V 
= (AB+BC+AC) / 2;
        S 
= sqrtl(V*(V-AB)*(V-BC)*(V-AC));
        V 
= S * z3 / 3;
        
if(V > 1e-10) cout<<setiosflags(ios::fixed)<<setprecision(4)<<V<<endl;
        
else cout<<"0.0000\n";
    }

    
return 0;
}
posted on 2005-10-28 21:05  Fancy Mouse  阅读(443)  评论(1编辑  收藏  举报