首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取从0到1的值?

如何获取从0到1的值?
EN

Stack Overflow用户
提问于 2012-10-10 19:38:38
回答 6查看 5.7K关注 0票数 3

我试着寻找这个问题的答案,但我猜没有人需要这样的东西,或者它是非常简单的东西,我就是想不通。所以:

我有一个从45到20的值。

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

我会用LERP值实现,如下所示:

代码语言:javascript
复制
public float minHeight = 10.0f;
public float maxHeight = 30.0f;
public float convertedValue;

convertedValue =?( 45 - 20 = 25 = 100%) * 0.01;

代码语言:javascript
复制
newValue = Mathf.Lerp(minHeight, maxHeight, convertedValue);

希望有人能帮我。我是编程新手,我想知道这是否可能。耽误您时间,实在对不起!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-10-10 19:41:47

我相信与你的解释相符的计算方法是

代码语言:javascript
复制
newValue = (convertedValue - minHeight) / (maxHeight - minHeight);

newValue = 0 @ minHeight和1@ maxHeight

编辑

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

但是,来自MSDN

Lerp被定义为

代码语言:javascript
复制
value1 + (value2 - value1) * amount

例如,在您的示例中,convertedValue应该是分数,而答案是插值结果,这意味着您的问题/我(和Esailja)对它的解释是颠倒的:)

代码语言:javascript
复制
Mathf.Lerp(10.0, 30.0, 0.5) = 20.0

鉴于

代码语言:javascript
复制
InvertedLerp(10.0, 30.0, 20) = 0.5 // My / Esailja's calc

:)

票数 5
EN

Stack Overflow用户

发布于 2012-10-10 20:04:27

我知道您的Mathf.LerpUnity3D API的一部分。已经有一个函数可以完成您想要做的事情:Mathf.InverseLerp。你应该用这个。

票数 2
EN

Stack Overflow用户

发布于 2012-10-10 19:42:40

代码语言:javascript
复制
public float minHeight = 10.0f;
public float maxHeight = 30.0f;

float curHeight = 25.0f;

float newValue = ( curHeight - minHeight ) / ( maxHeight - minHeight );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12818440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档