符号性的线性插值优化
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)
对于较小的值 lerp
与 a
具有相同的符号,对于较大的值 - 与 b
相同的符号,因此您无需计算 lerp
值 - 只需将 f
与 f0
进行比较
在一个紧密的循环中,我在两个浮点值之间进行线性插值。然而,结果中唯一必要的部分是符号(无论结果是负数还是正数)。我现在正在做一个典型的 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)
对于较小的值 lerp
与 a
具有相同的符号,对于较大的值 - 与 b
相同的符号,因此您无需计算 lerp
值 - 只需将 f
与 f0