POJ 2208 欧拉四面体公式[转]

1,建议x,y,z直角坐标系。设A、B、C少拿点的坐标分别为(a1,b,1,c1),(a2,b2,c2),(a3,b3,c3),四面体O-ABC的六条棱长分别为l,m,n,p,q,r;


2,四面体的体积为,由于现在不知道向量怎么打出来,我就插张图片了,


将这个式子平方后得到:


3,根据矢量数量积的坐标表达式及数量积的定义得


又根据余弦定理得


4,将上述的式子带入(1),就得到了传说中的欧拉四面体公式



在这里说明一点这里面的推导我也是看的,要是是我自己推出来的,我不就欧拉了,哈哈。
poj有一道就是关于这个公式的,说实话出这种题很没意思,如果你不知道公式基本上就做不出来,又一次我们学校比赛,有一哥就出了这个题当时叫人只有那么郁闷了,每一个人A。个人感觉这个公式的用处不大不过它表达数学是一种美丽的东西。最后得到的这个公式也是很漂亮的。

相关题目:POJ 2208、HDU 1411

以上内容转载于:http://www.cnblogs.com/dgsrz/articles/2590309.html

View Code
 1 #include <iostream>
 2 #include <cmath>
 3 #include <cstdio>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 
 7 using namespace std;
 8 
 9 int main()
10 {
11     double a, b, c, d, e, f;
12     while (scanf("%lf %lf %lf %lf %lf %lf", &a, &b, &c, &d, &e, &f) != EOF)
13         {
14         double ang1, ang2, ang3, ang;
15         ang1 = acos((b*b+c*c-f*f)/(2*b*c));
16         ang2 = acos((a*a+c*c-e*e)/(2*a*c));
17         ang3 = acos((a*a+b*b-d*d)/(2*a*b));
18         ang = (ang1+ang2+ang3)/2;
19         double res = (1.0/3.0)*a*b*c*sqrt(sin(ang)*sin(ang-ang1)*sin(ang-ang2)*sin(ang-ang3));
20         printf("%.4lf\n", res);
21     }
22     return 0;
23 }
原文地址:https://www.cnblogs.com/proverbs/p/2932705.html