代码之家  ›  专栏  ›  技术社区  ›  Philipp Lenssen

与…相反

  •  2
  • Philipp Lenssen  · 技术社区  · 8 年前

    在Unity或伪代码中,如何将以下计算从1以上的给定值反转为修改后的值。。。

    // value can be anything that's > 1f and <= 2f
    float power = Mathf.Pow(value, 2f) * 2f;
    float modifiedValue = Mathf.Pow(value, power);
    

    。。。要将给定的modifiedValue再次转换为原始值?(我可能需要在某个地方有一个电源,但不太确定。)谢谢

    1 回复  |  直到 8 年前
        1
  •  3
  •   Basile Perrenoud    8 年前

    求解原始值将涉及复数。这是来自 wolfram alpha

    enter image description here

    既然您说这是针对UI滑块的,那么很明显,进行计算是过分的。以下是两种解决方案:

    • 使用具有相同优点的函数。 value^8 是一个很好的候选者:将值限制在1到256之间,并对低值进行相同的微调。还原它很容易使用 modifiedValue^(1/8)

    • 使用查找表。

    在这两者之间进行选择是一种偏好。我的建议是:如果您在函数方面很灵活,请使用第一种解决方案。代码将更加清晰,并且以后很容易更改函数。否则,请使用查找表