c# - 如何让值从0到1?

标签 c#

我试图寻找这个问题的答案,但我想没有人需要这样的东西,或者它非常简单,我只是无法理解。所以:

我有一个从 45 变为 20 的值。

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

我会像这样在 Lerp 值中实现它:

public float minHeight = 10.0f;
public float maxHeight = 30.0f;
public float convertedValue;

转换值 = ??? (类似于 45 - 20 = 25 = 100%)* 0.01;

newValue = Mathf.Lerp(minHeight, maxHeight, convertedValue);

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

最佳答案

我相信符合您的解释的计算是

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

:)

关于c# - 如何让值从0到1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12818440/

相关文章:

C# 正则表达式 : An object reference is required for the non-static field, 方法,或属性 'Regex.Match(string)'

c# - 将函数绑定(bind)到 xaml 中的 MouseDown 事件?

c# - 错误设置断点,但仅在调试时在某些行上设置断点

c# - 'Microsoft.AspNet.SignalR.Hubs.ClientProxy' 不包含 'broadcastMessage' 的定义

c# - 使用 DataTable 填充 C# TreeView

c# - 无法从 TFS 获取 VersionControlServer 服务

c# - 使用 Entity Framework 4.0 中的上下文确定实体的主键

c# - 从 GridView 获取值(value)

c# - 使用 JsonConvert.DeserializeObject 反序列化派生对象列表

c# - 从MVC WebApi调用时Git/SSH挂起