空间平面法向量求法-精选.pdf
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,得 · =0 且 · =0 ,由此得到关于 x,y 的
方程组,解此方程组即可得到 。 2、
任何一个 x,y,z 的一次方程的图形是平面;反之,任何一个平面的方程是
Ax+By+Cz+D=0(A,B,C 不同时为 0) ,称为平面的一般方程。其法向量
x,y,z 的一次方程。 =(A,B,C); 若平面与 3
由 的方向转为 的方向时,大拇指所指的方向规定为
× 的方向 , × =- × 。
设 =(x1,y1,z1), =(x2,y2,z2), 则 × =
(注: 1、二阶行列式 :
; 2、适合右手定则。 )
Code public double[] GetTriangleFunction(ESRI.ArcGIS.Geometry.IPoint point1, ESRI.ArcGIS.Geometry.IPoint point2, ESRI.ArcGIS.Geometry.IPoint point3)
空间平面法向量求法 一、法向量定义
定义 :如果
,那么向量
上分),无数条。 二、 平面法向量的求法
1 、内积法
叫做平面
的法向量。平面
的法向量共有两大类(从方向
在给定的空间直角坐标系中, 设平面 的法向量 =( x,y,1 )[或 =( x,1,z) 或 =( 1,y,z )],
在平面 内任找两个不共线的向量 , 。由
//向量 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) {
个坐标轴的交点为 P(a,0,0),P(0,b,0),P(0,0,c), 则平面方程为 :
的截距式方程,把它化为一般式即可求出它的法向量。 3 、外积法
,称此方程为平面
设 , 为空间中两个不平行的非零向量,其外积
× 为一长度等于 | || |sin θ,(θ为 两
者交角,且 0< θ<π,而与 , , 皆垂直的向量。通常我们采取 “右手定则 ”,也就是右手四指
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;
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; }
{
tryLeabharlann Baidu
{
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];