如何在空间图形中算一个面的法支持向量机例子,最好举一个例子

【图文】平面法向量的求法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
平面法向量的求法
上传于||暂无简介
大小:298.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【图文】直线的方向向量、平面的法向量以及空间线面关系的判定_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
直线的方向向量、平面的法向量以及空间线面关系的判定
上传于||暂无简介
大小:1.22MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢空间向量与立体几何知识点_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
空间向量与立体几何知识点
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩20页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1194人阅读
三维空间中平面的法向量计算
&&&&&取平面上三点分别为: 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);
//求解成功
//没有法向量
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 _a3=x3-x2; float _b3=y3-y2; float _c3=z3-z2;
//_a1x+_b1y+_c1z=0;
//_a2x+_b2y+_c2z=0;
//_a3x+_b3y+_c3z=0;
//3个未知数3个方程组成的齐次方程组求解
//系数矩阵A
//| _a1 _b1 _c1 |
//| _a2 _b2 _c2 |
//| _a3 _b3 _c3 |
//如果行列式A的值不等于0,则有唯一解且为零解
float DA=_a1*_b2*_c3+_b1*_c2*_a3+_a2*_b3*_c1-_a3*_b2*_c1-_a1*_b3*_c2-_a2*_b1*_c3;
if (DA!=0)
//---------------------------------------------//
//如果行列式A的值等于0,则有非零解
//非零解即x!=0时有解或者y!=0时有解或者z!=0时有解
float x=0.0f,y=0.0f,z=0.0f;
//若z!=0时有解,取z=-1
//_a1x+_b1y=_c1;---(1)
//_a2x+_b2y=_c2;---(2)
//_a3x+_b3y=_c3;---(3)
//任取2个方程即可,在此取(1)(2)
x=0.0f;y=0.0f;
bool flag3=GetTwoLineIntersection(_a1,_b1,_c1,_a2,_b2,_c2,x,y);
if (flag3)//假设成立
//假设不成立,继续试验另一个假设
//若x!=0时有解取x=-1,平面中两条直线求交点问题
//_b1y+_c1z=_a1;---(1)
//_b2y+_c2z=_a2;---(2)
//_b3y+_c3z=_a3;---(3)
//任取2个方程即可,在此取(1)(2)
y=0.0f;z=0.0f;
bool flag1=GetTwoLineIntersection(_b1,_c1,_a1,_b2,_c2,_a2,y,z);
if (flag1)//假设成立
//假设不成立,继续试验另一个假设
//若y!=0时有解取y=-1,平面中两条直线求交点问题
//_a1x+_c1z=_b1;---(1)
//_a2x+_c2z=_b2;---(2)
//_a3x+_c3z=_b3;---(3)
//任取2个方程即可,在此取(1)(2)
x=0.0f;z=0.0f;
bool flag2=GetTwoLineIntersection(_a1,_c1,_b1,_a2,_c2,_b2,x,z);
if (flag2)//假设成立
//所有假设都不成立,求解失败
}两个未知数两个方程的方程组,根据克莱姆法则求解如下:
bool GetTwoLineIntersection(float _a1,float _b1,float _c1,float _a2,float _b2,float _c2,float &x,float &y)
//_a1x+_b1y=_c1;---(1)
//_a2x+_b2y=_c2;---(2)
if (_c1==0&&_c2==0)
//2个未知数2个方程组成的齐次方程组求解
//系数矩阵B
//| _a1 _b1 |
//| _a2 _b2 |
float DB=_a1*_b2-_a2*_b1;
if (DB!=0)//有唯一零解
else//有无数解
//2个未知数2个方程组成的非齐次方程组求解
//系数矩阵B
//| _a1 _b1 |
//| _a2 _b2 |
float DB=_a1*_b2-_a2*_b1;
if (DB!=0)//有唯一解
float dD1 = _c1 * _b2 - _c2 * _b1;
float dD2 = _a1 * _c2 - _a2 * _c1;
x = dD1 / DB;
y= dD2 / DB;
else//有无数解或者无解
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8571次
排名:千里之外
原创:14篇
(1)(6)(1)(1)(4)(1)(1)(4)(1)}

我要回帖

更多关于 试举出度量空间的例子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信