C# 如何将值设置为从0到1?

C# 如何将值设置为从0到1?,c#,C#,我试图寻找这个问题的答案,但我想没有人需要像这样的东西,或者是一些超级简单的东西,我就是想不起来。因此: 我有一个从45变为20的值 我需要一个从0到1的值,与45到20的时间相同。我知道45-20=25,这将是我的100%,因此是数字1 我会在Lerp值中这样实现: public float minHeight = 10.0f; public float maxHeight = 30.0f; public float convertedValue; convertedValue=???(大约

我试图寻找这个问题的答案,但我想没有人需要像这样的东西,或者是一些超级简单的东西,我就是想不起来。因此:

我有一个从45变为20的值

我需要一个从0到1的值,与45到20的时间相同。我知道45-20=25,这将是我的100%,因此是数字1

我会在Lerp值中这样实现:

public float minHeight = 10.0f;
public float maxHeight = 30.0f;
public float convertedValue;
convertedValue=???(大约45-20=25=100%)*0.01

希望有人能帮助我。我对编码相当陌生,我只是想知道这是否可能。谢谢你的时间

minvalue=20
maxvalue=45
result=(aktvalue-minvalue)/(maxvalue-minvalue)

类似这样的情况?

我相信与您的解释相匹配的计算结果是

newValue = (convertedValue - minHeight) / (maxHeight - minHeight);
i、 e.
newValue=0
@
minHeight
和1@
maxHeight

编辑

我以前从未见过Lerp,但它显然是简单的线性插值

然而,从

Lerp定义为

value1 + (value2 - value1) * amount
i、 e.在您的示例中,
convertedValue
应该是分数,答案是插值结果,这意味着您的问题/my(以及Esailja)对其的解释是相反的:)

i、 e

鉴于

InvertedLerp(10.0, 30.0, 20) = 0.5 // My / Esailja's calc
:)

房产怎么样

public int neededvalue
{
    get
    {
        if (value == 45)
            return 1;
        else if (value == 20)
            return 0
        else
            throw new Exception("wrong input");
    }
}

public float neededvaluealternative
{
    get
    {
        return (value - 20) / (45 - 20)
    }
}

我认为您的应用程序是
Unity3D
api的一部分。已经存在一个函数来执行您尝试执行的操作:。你应该用这个。

你的问题让人困惑,你说的是45和20,但显示的是10和30。啊,对不起。我的意思是控制我的lerp的值是45-20,10和30只是其中的一部分。我很快就会把它清理干净。谢谢你的快速而好的解决方案!感谢所有参与清理的人。对不起,这个问题太麻烦了。
InvertedLerp(10.0, 30.0, 20) = 0.5 // My / Esailja's calc
public float minHeight = 10.0f;
public float maxHeight = 30.0f;

float curHeight = 25.0f;

float newValue = ( curHeight - minHeight ) / ( maxHeight - minHeight );
public int neededvalue
{
    get
    {
        if (value == 45)
            return 1;
        else if (value == 20)
            return 0
        else
            throw new Exception("wrong input");
    }
}

public float neededvaluealternative
{
    get
    {
        return (value - 20) / (45 - 20)
    }
}

public float AnswerMureahkosQuestion(float input)
{
   const float minValue = 20;
   const float maxValue = 45;
   float range = maxValue - minValue;

   // nominalise to 1
   // NOTE: you don't actually need the *1 but it reads better
   float answer = (input+0.00001/*prevents divbyzero errors*/) / range * 1; 

   // invert so 45 is 0 and 20 is 1
   answer =  1 - answer;
   return answer;
}