三维空间中平面的法向量计算
取平面上三点分别为: P1(x1,y1,z1), P2(x2,y2,z2), P3(x3,y3,z3), 设法向量为(dx,dy,dz), 则法向量满足以下等式:
(x2-x1)*dx+(y2-y1)*dy+(z2-z1)*dz=0;
(x3-x1)*dx+(y3-y1)*dy+(z3-z1)*dz=0;
(x3-x2)*dx+(y3-y2)*dy+(z3-z2)*dz=0;本质即为求解三个未知数三个方程的方程组,依据克莱姆法则,计算法向量如下:
bool flag=CalNormalVector(x1,y1,z1,x2,y2,z2,x3,y3,z3,dx,dy,dz);
if(flag)
{
//求解成功
}
else
{
//没有法向量
}
bool CalNormalVector(float x1,float y1,float z1,float x2,float y2,float z2,float x3,float y3,float z3,
float &dx,float &dy,float &dz)
{
//float a1,a2,b1,b2,c1,c2;
//
float _a1=x2-x1; float _b1=y2-y1; float _c1=z2-z1;
float _a2=x3-x1; float _b2=y3-y1; float _c2=z3-z1;
float