[计算几何]POJ 2208欧拉四面体体积公式
(2011-08-13 18:56:53)
标签:
杂谈 |
分类: ACMsteps |
20110813
今天做的新题哟~~偶然发现的.
题目大意:给6条边,0A,OB,OC,AB,AC,BC;求这六条边确定的四面体的面积。
解题思路:网上有欧拉公式求四面体体积的详细解题报告。很认真的看了,发现确实很好。下面我自己推导一边吧,美丽的数学啊~巨弱项。X:代表叉乘,*代表点乘;
给定四个点O(0,0,0),A(Xa,Ya,Ca),B(Xb,Yb,Yc),C(Za,Zb,Zc);
V=1/6*(OA x OB)*OC =|Xb,Yb,Yb |
WHY?:
OA x OB = 2*OAB;
V = 1/3*OAB*OC*sin(C);
代入即V=1/6*(OA x OB)*OC
V2 =1/36*|Xb,Yb,Yb |*|Ya,Yb,Yc |;
然后行列式相乘,不阐述了;
会得出两个基本项 Xa*Xa+Ya*Ya+Za*Za=|OA|2;
这样将坐标的关系变换为边的关系;
直接套公式就可以求解了;
这里要注意的就是对应的边不可以乱换,用来旋转是可以的,兑换的话就会有问题;
OA,OB,OC三遍可以旋转,不可兑换同理对于AB,AC,BC;
这里WA了2次,本来以为是精度问题= =
#include<iostream>
#include<cmath>
using namespace std;
double P( double a,double b,double c,double d,double e ){ return a*(b*c-d*e); }
int main()
{
}