Algorithm to map an interval to a smaller interval

前端 未结 6 2095
生来不讨喜
生来不讨喜 2021-02-02 11:50

I tried searching, but due to the nature of my question, I was unable to find something satisfactory.

My problem is the following: I am trying to map numbers ranging fro

6条回答
  •  暗喜
    暗喜 (楼主)
    2021-02-02 12:24

    // Given a value from intervalA, returns a mapped value from intervalB.
    function intervalicValueMap(intervalA, intervalB, valueIntervalA) {
        var valueIntervalB = (valueIntervalA - intervalA[0]) * (intervalB[1] - intervalB[0]) 
                                / (intervalA[1] - intervalA[0]) + intervalB[0];
    
        valueIntervalB = Math.round(valueIntervalB); // Ommit rounding if not needed.
        return valueIntervalB;
    }
    
    var intervalA = [100, 200];
    var intervalB = [1, 10];
    var valueIntervalA = 170;
    var valueIntervalB = intervalicValueMap(intervalA, intervalB, valueIntervalA);
    
    console.log(valueIntervalB); // Logs 7
    

提交回复
热议问题