跳转至

帧同步需要不同设备与客户端的同步,直接使用浮点数计算会因为设备不同导致出现严重的误差。因此需要单独制作定点数库来进行多个设备间的同步。

目录:定点数学库内容

  • 定点数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。

二.定点向量类

Comments