查看: 2643|回复: 5

osg::Plane 求平面一般方程出现异常

[复制链接]

该用户从未签到

发表于 2009-7-6 11:46:57 | 显示全部楼层 |阅读模式
通过三角形的三个顶点参数,利用osg:lane  创建一平面,但是输出该平面一般方程时发现系数全为0,当然这三个顶点构成的三角形非常小,如
顶点1(0.00939369 -0 0.000713777)
顶点2(0.00936423 -0 0.000812629)
顶点3(0.00986672 -0.0005 0.000884266)
如何避免这类情况发生呢?

该用户从未签到

发表于 2009-7-6 12:59:17 | 显示全部楼层
可以用手算吧:
osg:: vec3d p1,p2,p3;  //p1,p2,p3是待求平面上不共线的三点
osg:: dir1,dir2,dir;
dir1 = p1-p3;
dir2 = p2-p3;  //dir1,dir2是两个矢量
dir = dir1*dir2;  //向量的叉乘,叉积的结果是平面的法向量(叉积的定义)
dir = dir.normalize(); //归一化

//平面的点法式方程为:dir._v[0]*(x-p1._v[0]) + dir._v[1]*(y-p1._v[1]) + dir._v[2]*(z-p1._v[2]) = 0
//展开上式为一般式: Ax + By + Cz + D = 0;
其中:
A = dir._v[0]
B = dir._v[1]
C = dir._v[2]
D = -(dir_v[0]*p1._v[0] + dir._v[1]*p1._v[1] + dir._v[2]*p1._v[2])

该用户从未签到

 楼主| 发表于 2009-7-6 14:38:10 | 显示全部楼层
谢谢,我后来想想,若是用平面法线和三角形的一个顶点来创建平面应该就不会出现这样的问题

[ 本帖最后由 ghczhaolei 于 2009-7-6 15:08 编辑 ]

该用户从未签到

发表于 2009-7-15 21:54:51 | 显示全部楼层
dir = dir1*dir2;  //向量的叉乘,叉积的结果是平面的法向量(叉积的定义)

osg里面认得叉积符号*么?

该用户从未签到

发表于 2009-7-15 23:11:20 | 显示全部楼层
向量叉乘:
v = v1 ^ v2

该用户从未签到

发表于 2011-12-27 19:43:02 | 显示全部楼层
老帖新顶……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表