在图形编程中,我经常处理 0-1 范围内的值并对它们执行各种数学运算,其中一个是将值提高幂以实现指数效果:
Math.pow(0.75, 2); // 0.5625
但是,有时我想使用它的“反转”版本(不同于
0.5
的幂):
1 - Math.pow(1 - 0.75, 2); // 0.9375
这非常适合我的目的,但写出表达式的方式相当复杂,尤其是当它被大量使用时。
我想知道数学或常见编程语言中是否存在执行此操作的函数,或者我上面写的是否是实现此效果的最简单方法,我应该继续编写自己的辅助函数来使使用起来更好。
在任何情况下,非逆函数都以连续且单调递增的方式将范围 [0, 1] 映射到范围 [0, 1]。差异(由指数控制)在于曲线是否首先陡峭然后变平,或者是否开始平坦然后变得越来越陡峭。与线性/恒等映射相比,曲线有一个位于上方或下方的腹部。
对于倒置的情况,您有类似的曲线,只是上下(或左右,如果您愿意)是镜像的。我相信通过应用
1 - x
垂直翻转它并另外对指数进行相同的操作会使这变得过于复杂。
现在,如何解决这个问题?问题是参数的实际含义是什么以及源代码如何转换为人类可以快速理解的内容。为此,最好编写一个辅助函数。然而,就执行速度而言,这需要一种进行一些优化的语言,例如不断传播和内联。总而言之,我想说这个问题无法以明确的方式回答,因为它过多地依赖于缺失的信息和个人观点,使其偏离主题。