HeadlinesBriefing HeadlinesBriefing.com

转击弧度提升代码效率

Hacker News •
×

tau与pi之争主导了编程中数学常量的讨论,但更重要的机会被忽略了:消除弧度。

大多数代码使用pi或tau将值转换为弧度用于三角函数。例如,在Godot引擎源代码中,开发者在调用sin之前将周期性值h乘以tau,尽管h已经在[0,1]范围内。这种转换是不必要的,因为数学库内部会立即将输入乘以4/pi,从而有效地抵消这种转换。

使用转(turns)而非弧度可以简化代码并提高精度。转参数化圆形从0到1,其中0.25恰好代表90度,不同于弧度无法精确表示常见角度。这种方法消除了冗余的乘除法。

对于使用现有库的开发者,半转(half-turns)提供了一种实用替代方案。CUDA的sincospi内在函数计算输入乘以pi的正弦和余弦,实际上使用半转。通过调用sincospi而非sin和cos(使用弧度),开发者可以立即停止使用pi和tau常量。

本文认为,在整个代码库中切换到转或半转通常只涉及最小的更改,往往只是删除不必要的转换代码。库通常会在内部转换 away from弧度,这使得这种过渡直接且有益。

关键实体:公司:Godot引擎

来源: Hacker News · 由HeadlinesBriefing整理摘要