Assignment 11

Interpolation

by F Fornos

HTML

<b>Enter Time in Hours:<br></b>
<input type="textbox" id="rfTime" value="4.5" size="1" />
<input type="button" value="Calculate Average Rainfall" onClick="avRainfall();" />
<br/>

<p id='reportOut'></p>

JavaScript

var displayrfTable = '';
var rfResults = '';;
var rfTime;

function avRainfall() {
  rfTime = document.getElementById("rfTime").value;

  rfResults = '<b>Time Requested:</b> ' + rfTime + "<br/>";
  for (var i = 0; i < rfTable.length; i++) {
    DataPoint = i + 1;
    if (i == rfTime) {
      rfResults += '<b>Approximate Rainfall:</b> ' + rfTable[i] + " inches";
      break;
    }

    if (i > rfTime && i < DataPoint) {
      discreteSet1 = rfTable[i] - rfTable[i - 1];
      discreteSet2 = 1 - (i - rfTime);
      interpolationAnalysis = rfTable[i - 1] * 1 + (discreteSet1 * discreteSet2);
      interpolationAnalysis = Math.ceil(interpolationAnalysis * 1000) / 1000;
      rfResults += '<b>Approximate Rainfall:</b> ' + interpolationAnalysis + " inches.";
      break;
    }
  }

  generateReport();
}

function generateReport() {
  displayrfTable = '';
  for (var i = 0; i < rfTable.length; i++) {
    displayrfTable += i + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + rfTable[i] + "<br/>";
  }

  report = '';
  report += "<br/><b><u>Interpolation Lookup Table:</u></b><br/>";
  report += "<br/>Hour | Rainfall Amount<br/>"
  report += displayrfTable;
  report += "<br/>";
  report += rfResults;
  document.getElementById("reportOut").innerHTML = report;
}

var rfTable = [];
rfTable[0] = '0.00';
rfTable[1] = '0.04';
rfTable[2] = '0.11';
rfTable[3] = '0.60';
rfTable[4] = '0.87';
rfTable[5] = '0.95';
rfTable[6] = '1.00';

generateReport()