查看: 1643|回复: 6

OSG好象没有精度控制的概念

[复制链接]

该用户从未签到

发表于 2010-12-31 11:40:09 | 显示全部楼层 |阅读模式
最近研究了下OSG,做了一点测试,发现OSG好象没有精度控制的概念.即两个浮点数相差多大可认为相等,两个点的距离多近可认为重合.

举例如下:

1.Matrix有大量的两个浮点数直接用"=="比较相等,但我没有发现重载浮点数比较的==号.

2.我用Delaunay三角化平面内的上下两排点,上排点的Y值相同,下排点的Y值也相同,但其中下排点的第一个点与下排的其它点在Y方向上相差小于e-10,三角化后的结果是下排的第一个点与下排的其它点之间都有连线.我没有找到精度设置的函数.

有人发现这个问题吗?亦或我没有找到方法?

该用户从未签到

发表于 2010-12-31 12:24:44 | 显示全部楼层
这个是没有的~~

该用户从未签到

发表于 2010-12-31 13:08:46 | 显示全部楼层
C++里面是有的啊,,precision,,控制应该没问题吧~~~这个完全可以根据您的需求精度来控制具体需要的精度~
设置精度的函数很简单,只要判断当小于多少时为0就可以了~~~

该用户从未签到

 楼主| 发表于 2010-12-31 14:34:33 | 显示全部楼层
但无法控制OSG的函数的运算精度,如Matrix的两个对象在比较时或判断一个matrix对象是否是单位矩阵时,即使矩阵的每个对应数值相差都在e-10之内,两个矩阵也可能被认为不等.

再如我说的第二个例子,在一定精度下(如e-6),下排的点被认为在一条直线上,根本不会有第一个点与其它点之间的连线.但现在我完全无法控制Delaunay三角化时的精度.不知各位高手有没有办法?

我认为,如果在一些算法上不能控制运算精度,肯定是一个重大缺陷.

该用户从未签到

发表于 2011-1-4 08:35:28 | 显示全部楼层
这个确实没有发现有啊

该用户从未签到

发表于 2011-1-4 09:32:32 | 显示全部楼层
的确没有,并不是每一种算法都是严谨的,osg只需要保证核心的部分稳定可靠就可以了。您完全可以向osg-users提交您对与精度控制的更改,说明理由,并提请讨论和更新

该用户从未签到

 楼主| 发表于 2011-1-7 11:28:52 | 显示全部楼层
可能Delaunay三角化功能只能算OSG的一个不太重要的辅助功能,我还发现此功能有一些其它的问题,如:退化点集(所有点都位于一个圆上,此时三角网不唯一)产生的三角网有重复三角形.我再看看有没有办法绕过这些问题.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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