符号性的线性插值优化

Linear Interpolation Optimization For Sign-ness

在一个紧密的循环中,我在两个浮点值之间进行线性插值。然而,结果中唯一必要的部分是符号(无论结果是负数还是正数)。我现在正在做一个典型的 lerp 操作,在 a 和 b 之间。

a + f * (b - a);

考虑到我只需要知道结果符号而不是实际的锯齿值,是否有更有效的方法?

编辑:'f' 是沿插值的一组固定距离,这些距离是事先已知的。

您可以计算内插值是否在给定范围内改变符号:

if Sign(a) <> Sign(b) then  //don't forget about zero sign
  change occurs

在这种情况下找到 f 参数,其中 lerp = 0

a + f0 * (b - a) = 0
f0 = a / (a+b)

对于较小的值 lerpa 具有相同的符号,对于较大的值 - 与 b 相同的符号,因此您无需计算 lerp值 - 只需将 ff0

进行比较