欧拉四面体体积
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),就得到了传说中的欧拉四面体公式
代码:
// 求四面体的体积,欧拉公式.
// p, q, r 为AB,AC,AD, n, m, l 为BC, BD, CD
double V(double p, double q, double r, double n, double m, double l)
{
double rr = r * r, mm = m * m, nn = n * n;
double pp = p * p, qq = q * q, ll = l * l;
// 求3 * 3 的行列式..
double x1 = (pp + qq - nn) / 2.0, x2 = (pp + rr - mm) / 2.0, x3 = (qq + rr - ll) / 2.0;
double v = pp * (qq * rr - x3 * x3) - x1 * (x1 * rr - x2 * x3) + x2 * (x1 * x3 - qq * x2);
return sqrt(v) / 6.0;
}
收藏起来!!!当模板用