帧同步需要不同设备与客户端的同步,直接使用浮点数计算会因为设备不同导致出现严重的误差。因此需要单独制作定点数库来进行多个设备间的同步。
目录:定点数学库内容¶
- 定点数PEINT:定点数构造转化,加减乘除取反运算,大小比较移位运算,视图层进行转化
- 常用运算PECalc:定点数平方根(牛顿迭代法),数值钳制,三角函数计算
- 定点向量PEVector3:定点向量构造转化、加减乘除取反运算、点乘叉乘规格化、向量夹角运算、视图层使用转化
- 级数查表AcosTable:反余弦数值分割映射,数值级数查表
- 中间运算参数PEArgs:运算参数构造、弧度值大小比较、视图层使用转化
一.定点数PEINT¶
C#的long就是int64
PEINT标准:64位整型long改造,但是1经过左移十位后才是定点数的1,小数占十位。
1.1 定点数构造转化¶
定义一个乘法因子,值为1左移10位。 - 传入int,直接左移 - 传入float,先乘以左移十位大小的数,再四舍五入(Round) 并强转到标准long整型。
1.2 加减乘除取反、大小比较移位计算¶
- 注意取反:用一个private函数可以实现库内用long构造,但是不允许给外部使用。
1.3 视图层转化¶
- float:计算结果除以乘法因子
- int: 直接右移,然后强转int。