C++中处理计算几何问题中的浮点误差问题

计算几何问题中不可避免的会遇到浮点数计算误差和数值溢出的问题(计算结果超出浮点数表示范围)处理的问题,通常有三种基本的方法处理这种问题:

1.采用整数计算

  强制所有感兴趣的坐标点位于一个固定大小的整数网格中,因此所有得到关注点的坐标值变成了整数,这个时候判断两个点是否重合(相等)或者线段是否相交则可以精确计算。但一个代价就是线段的交点不一定位于整数格点上。

2.采用双精度实数

  一种可能的方法就是使用单精度浮点数存储坐标值,使用双精度浮点数完成算法的计算过程。

3.任意精度的计算

  这个方式不存在精度的问题,但是计算的效率将会很低,参考文献C. M. Hoffmann[1,2]

[1]C. Hoffmann. Geometric and Solid Modeling. Morgan-Kaufmann, San Mateo, CA, 1989.

[2]C. M. Hoffmann. The problems of accuracy and robustness in geometric computation. IEEE
Computer, 22(3):31–41, March 1989.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CppBlock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值