对于gis这种大坐标的引擎,精度问题是很关键的,特别是使用了gpu渲染场景,现在的gpu的精度都是float的,相较于double。
缺陷:
1、float是32位浮点数,布局是【1符号位+8指数位+23小数位】精度较低;
2、最大范围在cm级时为131072.00,也就是100公里的范围,相较于地球半径6,356,750米差的很远;
Float:比特数为32,有效数字为6-7,数值范围为 -3.4E+38 ~ 3.4E+38
如何尽量消除上面的问题,对于基于gpu渲染的场景来说很重要;
存在几种解决方法,参考文章1中,使用了RTC、RTE方式,这是一些常规的使用相对位置减少精度损失的方法,参考文章1中改进了RTE的方式,首先说明一下RTE就是目标位置相对于相机位置进行目标偏移,是以相机(或者眼睛)为中心的,下面主要关注这个方面。
计算步骤如下:
a、将目标位置P、和相机位置Q的double类型坐标转换成两个单精度float类型