数学范围 - 简单的问题

时间:2011-06-04 11:43:21

标签: iphone objective-c math

我有一个浮点数,表示百分比(0.0到100.0)%

float represent = 50.00; // fifty present, or half.

作为示例:将此数字转换为-2到2的范围 从而: 代表= 0将表示为-2 代表= 50将表示为0 代表= 100将表示为2

编辑: 来自Orbling和朋友们的简单回答,我仍在寻找以下内容:地图(价值,从低,从高,到低,到高) 目标C中是否有一个函数可以将这样的范围映射到更复杂的值?

2 个答案:

答案 0 :(得分:4)

represent = (represent / 25.0f) - 2.0f;

答案 1 :(得分:1)

这应该可以解决问题:

define map(v, r1, r2, t1, t2) 
{
    norm = (v-r1)/(r2-r1);
    return (t1*(1-norm) + t2*norm);
}

说明:

  • norm 被v缩放为0到1之间的值,与r1和r2相关。
  • 下一行是使用 norm 作为百分比因子计算t1和t2之间的点。

使用示例:

map (0, 0, 100, -2, 2) // 0 mapped to -2..2 in the range 0..100
-2.0
map (50, 0, 100, -2, 2) // 50 mapped to -2..2 in the range 0..100
0
map (100, 0, 100, -2, 2) // 100 mapped to -2..2 in the range 0..100
2.0
map (-90, -100, 20, -4, 2) // -90 mapped to -4..2 in the range -100..20
-3.5