1

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

a + f * (b - a);

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

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

4

1 回答 1

2

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

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值 - 只需ff0

于 2016-04-11T08:01:39.090 回答