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
}