机器视觉

自由、创新、技术、经典

浮点精度问题及解决方案

关键字:Vector, float, precision, rounding algorithm

最近在编写一个矢量运算库,将所有的平面CAD/CAM图形转化为矢量,

采用树形组织:形状 ->  轮廓 -> 段,段有几种基本类型:直线,圆弧,Bezier等,

在计算两个矢量集合的 交,并,减,异或操作时,遇到了严重的问题,

该问题是由浮点数本身不精确造成的,例如:计算直线与圆弧的交点坐标后,反过来检查,你会发现,

交点并没有落在直线上,或者交点到圆心距离并不相等。等等类似问题。并且该误差会随运算次数而累计。

若用一个很小的阀值作为检查的附加条件,会带来大量的算法改动,并且在少数情况下还是会出错。

这是一个Serious, serious, serious problem!

幸好搜索到下列文章:

http://zrusin.blogspot.com/2006/05/precision.html

具体方法还在学习中,但给我看到了一丝胜利的曙光。

本随笔将会在将来修改(future, memo)

 

posted on 2008-09-02 14:53  塞伦盖蒂之鹰  阅读(380)  评论(0)    收藏  举报

导航