• 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 }
  • 相关阅读:
    Orika对象复制教程(完美笔记)
    JAVA-开发构建Gradle项目安装使用教程
    Java中传入一个时间范围,取出该时间范围内所有日期的集合
    线程安全之原子操作
    Java内存模型以及线程安全的可见性问题
    Java线程池的应用
    Java中实现线程的方式
    线程通信
    线程状态
    CPU缓存和内存屏障
  • 原文地址:https://www.cnblogs.com/proverbs/p/2932705.html
Copyright © 2020-2023  润新知