Difference between revisions of "Measuring Lens Field of View"

From X10Wiki
Jump to navigation Jump to search
Line 1: Line 1:
<nowiki>
 
  
<html>
 
<br><br>
 
 
  <form name="l">
 
  <blockquote><table border=0 cellpadding=1 cellspacing=0 bgcolor="#C0C0C0"><tr><td><table border=0 cellpadding=4 cellspacing=0 bgcolor="#F8F8F8"><tr><td>
 
  <table><tr><td>
 
  <table>
 
  <tr><td align=right><b>Near Distance From Wall</b></td><td><input name="distancefromwall1" type="text" size=10></td></tr>
 
  <tr><td align=right><b>Near Wall Distance</b></td><td><input name="walldistance1" type="text" size=10></td></tr>
 
  <tr><td align=right><b>Far Distance From Wall</b></td><td><input name="distancefromwall2" type="text" size=10></td></tr>
 
  <tr><td align=right><b>Far Wall Distance</b></td><td><input name="walldistance2" type="text" size=10></td></tr>
 
  </table>
 
  </td><td>&nbsp;</td><td>
 
  <input type="button" value="Calculate Answer" onClick="javascript:calculate()"><br>
 
  <br>
 
  Near FOV&deg; = <span id="fovest1"></span><br>
 
  Far FOV&deg; = <span id="fovest2"></span><br>
 
  k = <span id="kanswer"></span><br>
 
  Final FOV&deg; = <span id="fovanswer"></span><br>
 
  Effective focal length = <span id="angularfocallength"></span><br>
 
  </td></tr></table>
 
  </td></tr></table></td></tr></table></blockquote>
 
  </form>
 
 
<script>
 
function roundNumber(num,dec) {
 
  var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
 
  return result;
 
  }
 
function ffov(y,x) {
 
  return (2*Math.atan(y/x)) * 180/Math.PI;
 
  }
 
function efl(deg) {
 
  return (36/2) / Math.tan((deg/2)/180*Math.PI);
 
  }
 
function calculate() {
 
  var x1 = 1.0 * document.l.distancefromwall1.value;
 
  var y1 = 1.0 * document.l.walldistance1.value/2;
 
  var x2 = 1.0 * document.l.distancefromwall2.value;
 
  var y2 = 1.0 * document.l.walldistance2.value/2;
 
  var k = (y1*x2 - x1*y2) / (y2-y1);
 
  var jj = document.getElementById("kanswer");
 
  if (jj) {
 
    jj.innerHTML = roundNumber(k,3);
 
    }
 
  var fov = ffov(y1,x1);
 
  jj = document.getElementById("fovest1");
 
  if (jj) {
 
    jj.innerHTML = roundNumber(fov,2)+"&deg;";
 
    }
 
  var fov = ffov(y2,x2);
 
  jj = document.getElementById("fovest2");
 
  if (jj) {
 
    jj.innerHTML = roundNumber(fov,2)+"&deg;";
 
    }
 
  fov = ffov(y1,(x1+k));
 
  jj = document.getElementById("fovanswer");
 
  if (jj) {
 
    jj.innerHTML = "<b>"+roundNumber(fov,2)+"&deg;</b>";
 
    }
 
  jj = document.getElementById("angularfocallength");
 
  if (jj) {
 
    jj.innerHTML = "<b>"+roundNumber(efl(fov),2)+"</b>";
 
    }
 
  }
 
function lenstest1() {
 
  document.l.distancefromwall1.value  = "29.125";
 
  document.l.walldistance1.value      = "39.84375";
 
  document.l.distancefromwall2.value  = "68";
 
  document.l.walldistance2.value      = "91.375";
 
  calculate();
 
  }
 
function lenstest2() {
 
  document.l.distancefromwall1.value  = "36";
 
  document.l.walldistance1.value      = "49.625";
 
  document.l.distancefromwall2.value  = "107.4375";
 
  document.l.walldistance2.value      = "145.375";
 
  calculate();
 
  }
 
function lenstest3() {
 
  document.l.distancefromwall1.value  = "34";
 
  document.l.walldistance1.value      = "48.125";
 
  document.l.distancefromwall2.value  = "77.5625";
 
  document.l.walldistance2.value      = "107.0625";
 
  calculate();
 
  }
 
function lenstest4() {
 
  document.l.distancefromwall1.value  = "30.875";
 
  document.l.walldistance1.value      = "42.25";
 
  document.l.distancefromwall2.value  = "74.125";
 
  document.l.walldistance2.value      = "100.125";
 
  calculate();
 
  }
 
function lenstest5() {
 
  // 700_1219, 700_1220
 
  document.l.distancefromwall1.value  = "18";
 
  document.l.walldistance1.value      = "4.08";
 
  document.l.distancefromwall2.value  = "30";
 
  document.l.walldistance2.value      = "7.0162";
 
  calculate();
 
  }
 
</script>
 
</td></tr></table>
 
</body></html>
 
</nowiki>
 

Revision as of 18:57, 12 March 2013