资源描述:
《空间平面法向量求法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、空间平面法向量求法一、法向量定义定义:如果,那么向量叫做平面的法向量。平面的法向量共有两大类(从方向上分),无数条。二、平面法向量的求法1、内积法在给定的空间直角坐标系中,设平面的法向量=(x,y,1)[或=(x,1,z)或=(1,y,z)],在平面内任找两个不共线的向量,。由,得·=0且·=0,由此得到关于x,y的方程组,解此方程组即可得到。2、任何一个x,y,z的一次方程的图形是平面;反之,任何一个平面的方程是x,y,z的一次方程。Ax+By+Cz+D=0(A,B,C不同时为0),称为平面的一般方程。其
2、法向量=(A,B,C);若平面与3个坐标轴的交点为P(a,0,0),P(0,b,0),P(0,0,c),则平面方程为:,称此方程为平面的截距式方程,把它化为一般式即可求出它的法向量。3、外积法设,为空间中两个不平行的非零向量,其外积×为一长度等于
3、
4、
5、
6、sinθ,(θ为两者交角,且0<θ<π,而与,,皆垂直的向量。通常我们采取“右手定则”,也就是右手四指由的方向转为的方向时,大拇指所指的方向规定为×的方向,×=-×。设=(x1,y1,z1),=(x2,y2,z2),则×=(注:1、二阶行列式:;2、适合右手
7、定则。)Codepublicdouble[]GetTriangleFunction(ESRI.ArcGIS.Geometry.IPointpoint1,ESRI.ArcGIS.Geometry.IPointpoint2,ESRI.ArcGIS.Geometry.IPointpoint3){try{doublea=0,b=0,c=0;//方程参数doublex1=0,x2=0,x3=0,y1=0,y2=0,y3=0,z1=0,z2=0,z3=0;//各点坐标值double[]returnValue=newdo
8、uble[3];x1=point1.X*1000;y1=point1.Y*1000;z1=point1.Z*1000;x2=point2.X*1000;y2=point2.Y*1000;z2=point2.Z*1000;x3=point3.X*1000;y3=point3.Y*1000;z3=point3.Z*1000;//向量I1double[]I1=newdouble[3];I1[0]=x2-x1;I1[1]=y2-y1;I1[2]=z2-z1;//向量I2double[]I2=newdouble[3]
9、;I2[0]=x3-x1;I2[1]=y3-y1;I2[2]=z3-z1;doubleX1=I1[0];doubleY1=I1[1];doubleZ1=I1[2];doubleX2=I2[0];doubleY2=I2[1];doubleZ2=I2[2];a=Y1*Z2-Y2*Z1;b=X2*Z1-X1*Z2;c=X1*Y2-X2*Y1;returnValue[0]=a;returnValue[1]=b;returnValue[2]=c;returnreturnValue;}catch(Exceptione)
10、{throwe;}}OPENGL里面就这样实现voidgetNormal(GLfloatgx[3],GLfloatgy[3],GLfloatgz[3],GLfloat*ddnv){GLfloatw0,w1,w2,v0,v1,v2,nr,nx,ny,nz;w0=gx[0]-gx[1];w1=gy[0]-gy[1];w2=gz[0]-gz[1];v0=gx[2]-gx[1];v1=gy[2]-gy[1];v2=gz[2]-gz[1];nx=(w1*v2-w2*v1);ny=(w2*v0-w0*v2);nz=(w
11、0*v1-w1*v0);nr=(GLfloat)sqrt(nx*nx+ny*ny+nz*nz);//向量单位化。ddnv[0]=nx/nr;ddnv[1]=ny/nr;ddnv[2]=nz/nr;}