World Wind 中解决世界坐标精度问题

注:对《添加模型》一文的一点补充,参考

http://blog.csdn.net/jk276993857/archive/2010/10/19/5951738.aspx

由于浮点数精度方面的问题,创建超大连续游戏世界或地理信息系统数字地球的开发者总是不可避免地陷入到麻烦中。几乎每个三维平台渲染矩阵都使用32位浮点数来表示坐标,然而当坐标值较大而同时要求不能有明显的精度错误时,浮点数就无法表示比第一人称视角射击游戏的场景更大的区域,也无法表达在全球范围下的城市级别地物。此前有《解决大型游戏世界坐标中的精度问题》和《虚拟城市中世界坐标的精度问题及解决方法》采用了基于基片(Segment)和偏移(Offset)的方法来解决此类问题。本文介绍了World Wind 1.4版本中解决世界精度问题的技术。

 

一、问题描述

在单精度32IEEE浮点数格式中,1位是符号位,接下来8位是指数部分(E),剩下23位是规一化数(或数的科学表示法形式)的小数部分(F)。对于32位浮点数来说,精度等于其尾数最低位的位值或粒度。由于 第一位的位值是2^E(表示2E次方)并有23位的小数,LBS的位值就是2^(E-23)。例如,非常接近于1的数(E=0,2^0=1),粒度就是2^(-23),约为0.0000001192。接近1000的数(E=8,2^8=1024),精度增加到0.0000612^(-13)),接近100000E=17,2^17=131072)的值,精度就是0.00781252^(-7))。用实际的术语来讲:以米为单位,我们的世界是边长为100公里的正方形,在我们世界的最远角落,32位浮点数仅能让我们来表示粒度为7.8毫米的空间。我们要表示的坐标系越大,在最远的范围内精度就越低。要表示全球的区域,地球半径为6370多公里,那将限于半米级别的精度。

 

精度误差的征兆:

1、  无法将相邻对象对齐

2、  网格中的裂缝

3、  动画抖动

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值