我试着寻找这个问题的答案,但我猜没有人需要这样的东西,或者它是非常简单的东西,我就是想不通。所以:
我有一个从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;
newValue = Mathf.Lerp(minHeight, maxHeight, convertedValue);希望有人能帮我。我是编程新手,我想知道这是否可能。耽误您时间,实在对不起!
发布于 2012-10-10 19:41:47
我相信与你的解释相符的计算方法是
newValue = (convertedValue - minHeight) / (maxHeight - minHeight);即newValue = 0 @ minHeight和1@ maxHeight
编辑
我以前从未见过Lerp,但显然它是简单的线性插值。
但是,来自MSDN的
Lerp被定义为
value1 + (value2 - value1) * amount例如,在您的示例中,convertedValue应该是分数,而答案是插值结果,这意味着您的问题/我(和Esailja)对它的解释是颠倒的:)
即
Mathf.Lerp(10.0, 30.0, 0.5) = 20.0鉴于
InvertedLerp(10.0, 30.0, 20) = 0.5 // My / Esailja's calc:)
发布于 2012-10-10 20:04:27
我知道您的Mathf.Lerp是Unity3D API的一部分。已经有一个函数可以完成您想要做的事情:Mathf.InverseLerp。你应该用这个。
发布于 2012-10-10 19:42:40
public float minHeight = 10.0f;
public float maxHeight = 30.0f;
float curHeight = 25.0f;
float newValue = ( curHeight - minHeight ) / ( maxHeight - minHeight );https://stackoverflow.com/questions/12818440
复制相似问题