c++ - 符号性的线性插值优化

标签 c++ math optimization sign lerp

在一个紧凑的循环中,我在两个浮点值之间进行线性插值。然而,结果中唯一必要的部分是符号(无论结果是负数还是正数)。我现在正在做一个典型的 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

进行比较

关于c++ - 符号性的线性插值优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36541083/

相关文章:

javascript - JavaScript 如何处理多变量方程?

python - 在 Cython 中优化代码的技巧

Python列表比较numpy优化

c++ - cpp 中 splice() 的功能

c++ - 如何通过非常频繁的读取/非常罕见的写入来同步对全局变量的访问?

sql - 为什么用纬度/经度计算地理距离而不是缓存笛卡尔点?

algorithm - 如果数字是小数,如何检查某个数字是否可以表示为 x^y?

c++ - 在循环中声明的对象是否只构造一次?

c++ - 无法将 'std::basic_istream<char>' 左值绑定(bind)到 'std::basic_istream<char>&&'

multithreading - 单线程 Windows 程序的最佳 AWS EC2 实例类型