2017-04-01 28 views
1

我正在尋找一個函數或算法,對於指定範圍內的值,將返回一個值在相同的範圍,但基於斬波/分割值是在難以解釋 - 在此基礎上空殼功能從「切碎」輸入範圍返回值

function choppedRange(value, min, max, chops) { 
    // value - a value in range min to max 
    // chops - integer defining how many "subranges" or "chops" to return values from 
    ... 
} 

// Map (linear conversion) input value in range oldMin -> oldMax 
// to a value in range newMin -> newMax 
function remap(oldValue, oldMin, oldMax, newMin, newMax) { 
    return (((oldValue - oldMin) * (newMax - newMin))/(oldMax - oldMin)) + newMin; 
} 

Illustration 一些預期輸出什麼圖試圖顯示如下:

  1. 確定在哪個砍輸入值(藍點)是。 (讓我們說,它的值是0.35 ...)
  2. 重映射(上面的函數)的值(藍)範圍0,250.350.5 是在minmax參數的範圍例如01remap(0.35, 0.25, 0.5, 0, 1)
  3. 與示例值輸出(綠點)應該是0.3999...

希望你能明白我的意思。

正如你可以看到我已經重新映射做 - 但我無法決定「砍」爲輸入值remap - 這樣的:

remap(input_value, chop_min, chop_max, min, max) 

我想根據chop_minchop_max找到在choppedRange

function choppedRange(value, min, max, chops) { 
    // Figure out chop_min and chop_max 
    ... 
    return remap(value, chop_min, chop_max, min, max) 
} 
+2

這是相當困難弄清楚你是什麼之後,我們談論的四捨五入在這裏? – biziclop

+0

是的 - 對不起 - 我試圖用插圖更新 – Larpon

回答

1

chops說法我結束了這個實現

function choppedRange(value, min, max, chops) { 
 
    // value - a value in range min to max 
 
    // chops - integer defining how many "subranges" or "chops" to return values from 
 
    var chopMin = min 
 
    var chopMax = max 
 
    var chopValue = max/chops 
 
    for (var i = 1; i <= chops; i++) { 
 
    var c = chopValue * i 
 
    if (c < value) 
 
     chopMin = c 
 
    if (c >= value) { 
 
     chopMax = c 
 
     break; 
 
    } 
 
    } 
 
    return remap(value, chopMin, chopMax, min, max) 
 
} 
 

 
function remap(oldValue, oldMin, oldMax, newMin, newMax) { 
 
    return (((oldValue - oldMin) * (newMax - newMin))/(oldMax - oldMin)) + newMin 
 
} 
 

 
var r = choppedRange(0.35, 0, 1, 4) 
 
console.log('Result',r)