Maths and mapping

You can define a function to do it

   define :rMap do |rIn, rOut, v|
      dOut = rOut[1] - rOut[0]
      dIn = rIn[1] - rIn[0]
      dOut / dIn * (v - rIn[0]) + rOut[0]
    end


    rIn =  [0.0, 2.5]
    rOut = [10, 20.0]

    puts rMap(rIn, rOut, 0)
    puts rMap(rIn, rOut, 1)
    puts rMap(rIn, rOut, 2.5)

generates

10.0
14.0
20.0

http://rubyfiddle.com/riddles/3b2f9

1 Like