【问题标题】:C or Obj-c function to normalize range to x-y将范围标准化为 x-y 的 C 或 Obj-c 函数
【发布时间】:2015-08-21 17:28:51
【问题描述】:

我的输出范围为 150-0。我想将它们映射到 0 到 1。或者可能是 0 到(小于 1 的某个值,例如 0.5),其中 150 为 0,0 为 1(或某些值小于..)。

这被认为是插值吗?得出这些值的公式是什么?但最好是,我可以调用一个内置的 StdLib 函数吗?

【问题讨论】:

  • 尝试写下代码并将代码添加到问题中。
  • 是的,这是线性插值。不,没有内置函数可以做到这一点。您想要的公式是给定两点的直线方程。这两个点是{150, 0}{0, 1}。有了这两点,就很容易找到y = mx + b 形式的方程,它将输入值映射到输出。

标签: objective-c c math range interpolation


【解决方案1】:

将您的数字除以 (Max - min)。这将使 150 成为 1,0 将成为 0,其他所有内容都是介于两者之间的数字。现在,要使其相反,只需执行 1 - result。

【讨论】:

    【解决方案2】:

    如果您需要将 0-1 映射到任何自定义范围,则需要将范围与 MAX-MIN 相乘,然后将 MIN 添加到其中以获得范围内的确切数字。

    公式为MIN + (MAX-MIN)*value

    value 的范围在 0-1 之间; MIN 是映射到 0 的数字; MAX 是映射到 1 的数字;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 2016-10-31
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多