- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
空间平面法向量求法
空间平面法向量求法
一、法向量定义
定义:如果,那么向量叫做平面的法向量。平面的法向量共有两大类(从方向上分),无数条。
二、平面法向量的求法 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 ,称为平面的一般方程。其法向量 A,B,C ;若平面与3个坐标轴的交点为P a,0,0 ,P 0,b,0 ,P 0,0,c ,则平面方程为:,称此方程为平面的截距式方程,把它化为一般式即可求出它的法向量。 3、外积法
设,为空间中两个不平行的非零向量,其外积×为一长度等于||||sinθ,(θ为 两者交角,且0 θ π,而与,, 皆垂直的向量。通常我们采取“右手定则”,也就是右手四指由的方向转为的方向时,大拇指所指的方向规定为×的方向,× -×。
设 x1,y1,z1 , x2,y2,z2 ,则×
(注:1、二阶行列式:;2、适合右手定则。)
Codepublic double[] GetTriangleFunction ESRI.ArcGIS.Geometry.IPoint point1, ESRI.ArcGIS.Geometry.IPoint point2, ESRI.ArcGIS.Geometry.IPoint point3 try double a 0, b 0,c 0; //方程参数 double x1 0, x2 0, x3 0, y1 0, y2 0, y3 0, z1 0, z2 0, z3 0; //各点坐标值 double[] returnValue new double[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; //向量I1 double[] I1 new double[3]; I1[0] x2 - x1; I1[1] y2 - y1; I1[2] z2 - z1; //向量I2 double[] I2 new double[3]; I2[0] x3 - x1; I2[1] y3 - y1; I2[2] z3 - z1; double X1 I1[0]; double Y1 I1[1]; double Z1 I1[2]; double X2 I2[0]; double Y2 I2[1]; double Z2 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; return returnValue; catch Exception e throw e; OPENGL里面就这样实现
void getNormal GLfloat gx[3],GLfloat gy[3], GLfloat gz[3],GLfloat *ddnv GLfloat w0,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 w0*v1-w1*v0 ; nr GLfloat sqrt nx*nx+ny*ny+nz*nz ; //向量单位化。 ddnv[0] nx/nr; ddnv[1] ny/nr;ddnv[2] nz/nr;
文档评论(0)