Assignment 11

Interpolation

by vzufelt

HTML

<body>
  <h1>
    Assignment 11: "Interpolation"
  </h1>
  <form>
    Enter Year of Rainfall<br>
    <input type="text" id="number"><br>
    <input type="button" value="Enter" id="click">
  </form>

  <div id="output"></div>
</body>

CSS

#click {
  background-color: black;
  color: white;
  margin-top: 8px;
  margin-bottom: 8px;
  width: 10em;
}

JavaScript

var rainfall = [0.00,0.04,0.11,0.60,0.87,0.95,1.00];

document.getElementById("click").onclick = function() {
  number = document.getElementById("number").value;
  check_number(rainfall, number);
}

function check_number(array, number) {
  if (number >= 0.0 && number <= array.length-1) {//check number is between 0 and array.length-1
    document.getElementById("output").innerHTML = linear_interpolation(array, number);
  }
  else {
    document.getElementById("output").innerHTML = "Please enter a number between 0 and " + (array.length-1) + ". <br>Your entry was " + number ;
  }
}

function linear_interpolation(array, number) {
    
  var number = parseFloat(number);

  var x = number;// Target X co-ordinate
  var x1 = Math.floor(number); // X1 = First co-ordinates
  var x2 = Math.floor(number+1); // X2 = Second co-ordinates
  var y1 = array[Math.floor(number)]; // Y1 = First co-ordinates
  var y2 = array[Math.floor(number+1)]; // Y2 = Second co-ordinates

  // Y = Interpolated Y co-ordinate.
  var y = (((x - x1)*(y2 - y1)) / ( x2 - x1)) + y1;

  return number == array.length-1 ? array[number] : Number(y).toFixed(2);//conditional statement
}