首页 > 代码库 > POJ 2208 Pyramids 欧拉四面体
POJ 2208 Pyramids 欧拉四面体
给出边长,直接就可以求出体积咯
关于欧拉四面体公式的推导及证明过程
2010-08-16 14:18
1,建议x,y,z直角坐标系。设A、B、C少拿点的坐标分别为(a1,b1,c1),(a2,b2,c2),(a3,b3,c3),四面体O-ABC的六条棱长分别为l,m,n,p,q,r; |
摘自:http://www.cnblogs.com/kuangbin/archive/2012/04/13/2446378.html
代码:
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler#include <stdio.h>#include <iostream>#include <cstring>#include <cmath>#include <stack>#include <queue>#include <vector>#include <algorithm>#define ll long long#define Max(a,b) (((a) > (b)) ? (a) : (b))#define Min(a,b) (((a) < (b)) ? (a) : (b))#define Abs(x) (((x) > 0) ? (x) : (-(x)))using namespace std;double P( double a,double b,double c,double d,double e ){ return a*(b*c-d*e);}double EulerTetrahedron(double OA, double OB, double OC, double AB, double BC, double CA){ OA *= OA; OB *= OB; OC *= OC; AB *= AB; CA *= CA; BC *= BC; double ans = 0; ans += P( OA,OB,OC,(OB+OC-BC)/2.,(OB+OC-BC)/2. ); ans -= P( (OA+OB-AB)/2.,(OA+OB-AB)/2.,OC,(OA+OC-CA)/2.,(OB+OC-BC)/2. ); ans += P( (OA+OC-CA)/2.,(OA+OB-AB)/2.,(OB+OC-BC)/2.,OB,(OA+OC-CA)/2.); return sqrt(ans/36);}int main(){ double OA,OB,OC,AB,BC,CA; while( scanf("%lf%lf%lf%lf%lf%lf",&OA,&OB,&OC,&AB,&CA,&BC)!=EOF ){ printf("%.4f\n",euler(OA, OB, OC, AB, BC, CA)); } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。