Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 倒转_Unity3d_Math - Fatal编程技术网

Unity3d 倒转

Unity3d 倒转,unity3d,math,Unity3d,Math,在Unity或伪代码中,我如何将下面的计算从大于1的给定值反转为修改后的值 // value can be anything that's > 1f and <= 2f float power = Mathf.Pow(value, 2f) * 2f; float modifiedValue = Mathf.Pow(value, power); //值可以是大于1f的任何值,求解原始值将涉及复数。这是我的数学题 既然您说这是针对UI滑块的,那么很明显,进行计算是过分的。以下是两种解

在Unity或伪代码中,我如何将下面的计算从大于1的给定值反转为修改后的值

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

//值可以是大于1f的任何值,求解原始值将涉及复数。这是我的数学题

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

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

  • 使用查找表


  • 在这两者之间进行选择是一种偏好。我的建议是:如果你在函数上很灵活,就使用第一种解决方案。代码会更干净,以后很容易更改函数。否则,使用查找表

    看起来更像是一个数学问题,所以请查找一个数字问题。@user202729链接似乎对我不起作用。只有低于100个可能的值(这是一个UI滑块),因此如果所有其他问题都失败,我可以尝试创建一个查找表以进行反转。我猜这会是一个严格的数学逆转,但如果不是这样的话,那就行了。非常感谢!值^8的曲线在精细调整开始时并不像需要的那样平坦(我刚刚在UI中尝试过,但在Wolfram中也覆盖了这两条曲线)。然而,Mathf.Pow(value,Mathf.Pow(value,3f))相当接近我想要的——也许这可以更容易地反转(不使用查找表)?当您在wolfram中输入它时,它将告诉您如何解决它(您可以在我答案中的链接中看到)。我认为任何
    value
    Pow
    函数的正确参数中的某个地方的解决方案都很难恢复。“一般来说,大多数函数value->expr在expr中多次出现value时都很难恢复。”——例如,
    value->Pow(2,value)
    具有相反的
    value->Log(2,value)
    。谢谢。我将使用1000个步骤的自动计算查找表,其中我将在modifiedValue-to-value加载过程中选择最小的差异匹配。@PhilippLenssen为什么不使用二进制搜索?