在一个紧凑的循环中,我在两个浮点值之间进行线性插值。然而,结果中唯一必要的部分是符号(无论结果是负数还是正数)。我现在正在做一个典型的 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
关于c++ - 符号性的线性插值优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36541083/