计算方法:
已知四面体顶点坐标分别为
(x1,y1,z1),
(x2,y2,z2),
(x3,y3,z3),
(x4,y4,z4),
可以通过如下两种方法求四面体体积:
1. 利用向量的混和积
过一顶点的三向量设为a,b,c,所求四面体的体积为:**|(a×b)·c|/6**.
假设(x1,y1,z1)为四面体顶点,则
a = (x2 - x1, y2 - y1, z2 -z1)
b = (x3 - x1, y3 - y1, z3 - z1)
c = (x4 - x1, y4 - y1, z4 - z1)
将上述向量带入上面公式即可求出四面体体积
2. 利用行列式计算
| 1 1 1 1 |v =1/6 * det | x1 x2 x3 x4 || y1 y2 y3 y4 || z1 z2 z3 z4 |
注意事项:
-----1. 注意舍入方式(0.5的舍入方向);防止输出-0.
2. 几何题注意多测试不对称数据.
3. 整数几何注意xmult和dmult是否会出界;符点几何注意eps的使用.
4. 避免使用斜率;注意除数是否会为0.
5. 公式一定要化简后再代入.
6. 判断同一个2*PI域内两角度差应该是abs(a1-a2)<beta||abs(a1-a2)>pi+pi-beta;相等应该是abs(a1-a2)<eps||abs(a1-a2)>pi+pi-eps;
7. 需要的话尽量使用atan2,注意:atan2(0,0)=0,atan2(1,0)=pi/2,atan2(-1,0)=-pi/2,atan2(0,1)=0,atan2(0,-1)=pi.
8. cross product = |u|*|v|*sin(a)dot product = |u|*|v|*cos(a)
9. (P1-P0)x(P2-P0)结果的意义:正: <P0,P1>在<P0,P2>顺时针(0,pi)内负: <P0,P1>在<P0,P2>逆时针(0,pi)内0 : <P0,P1>,<P0,P2>共线,夹角为0或pi