matlab 四面体体积

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sss_369/article/details/60328465

计算方法:

已知四面体顶点坐标分别为
(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
22
33



注意事项:
-----

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>共线,夹角为0pi

猜你喜欢

转载自blog.csdn.net/sss_369/article/details/60328465