Documentation
¶
Overview ¶
Package fixedpoint 提供 Q32.32 定点数原语,用于帧同步/状态同步场景下的跨平台 确定性数学计算。
解决的问题:帧同步要求"相同输入在任何机器上计算结果完全一致",但不同 CPU 的 浮点运算(IEEE 754 舍入、FMA 指令、x87 80 位寄存器)可能产生 1 ULP 级别的差异, 积累后导致不同步(desync)。定点数用整数运算模拟小数,彻底消除浮点不确定性。
格式:Q32.32 — 用 int64 表示,高 32 位为整数部分,低 32 位为小数部分。 精度约 2.3e-10(远超游戏物理需求),整数范围 ±2^31 ≈ ±21 亿。
与相邻原语的关系:
- gameloop/match 的 OnTick 内使用 fixedpoint 做物理计算,保证确定性;
- snapbuf 存的快照中坐标/速度用 fixedpoint.Fixed 而非 float64;
- loot 如需确定性抽取,可将权重转为 Fixed 做累加比较。
并发安全:Fixed 是值类型(int64),无共享状态。Vec2 亦为值类型。
Index ¶
- type Fixed
- func Clamp(v, lo, hi Fixed) Fixed
- func Dist(a, b Vec2) Fixed
- func DistSq(a, b Vec2) Fixed
- func FromFloat64(f float64) Fixed
- func FromFrac(num, denom int64) Fixed
- func FromInt(n int) Fixed
- func FromInt64(n int64) Fixed
- func Lerp(a, b, t Fixed) Fixed
- func Max(a, b Fixed) Fixed
- func Min(a, b Fixed) Fixed
- func Raw(v int64) Fixed
- func Sqrt(a Fixed) Fixed
- func (a Fixed) Abs() Fixed
- func (a Fixed) Add(b Fixed) Fixed
- func (a Fixed) Ceil() Fixed
- func (a Fixed) Div(b Fixed) Fixed
- func (a Fixed) Float64() float64
- func (a Fixed) Floor() Fixed
- func (a Fixed) Int() int
- func (a Fixed) Int64() int64
- func (a Fixed) Mul(b Fixed) Fixed
- func (a Fixed) Neg() Fixed
- func (a Fixed) Raw() int64
- func (a Fixed) Round() Fixed
- func (a Fixed) Sign() Fixed
- func (a Fixed) String() string
- func (a Fixed) Sub(b Fixed) Fixed
- type Vec2
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Fixed ¶
type Fixed int64
Fixed 是 Q32.32 定点数,用 int64 的低 32 位表示小数、高 32 位表示整数。 零值即 0。
Click to show internal directories.
Click to hide internal directories.