「被写界深度 計算」でググったら同じようなスクリプトが無数に出てきますが・・w
まぁいい練習台ではありますw
ちなみに許容錯乱円径の値は一応画面対角線長の1/1300を採ってます。
高画素機だとこの数字より浅くなると考えた方がいいかも知れません?
忘却防止用にソースも。次はCSSかなんかいじるスクリプト作るかー。
まぁいい練習台ではありますw
ちなみに許容錯乱円径の値は一応画面対角線長の1/1300を採ってます。
高画素機だとこの数字より浅くなると考えた方がいいかも知れません?
忘却防止用にソースも。次はCSSかなんかいじるスクリプト作るかー。
<script type="text/javascript"><!--
//画面サイズセット
function setting(){
var e = document.getElementById('slist').value;
e=e-1;
var wid = new Array(23.6 , 22.2 , 28.7 , 17.3 , 6.9 , 5.7 , 17 , 45 , 36);
var hig = new Array(15.8 , 14.8 , 19.1 , 13 , 5.2 , 4.3 , 13 , 56 , 24);
document.getElementById('fwidth').value=wid[e];
document.getElementById('fheight').value=hig[e];
}
function dofcalc(){
var n = document.getElementById('aperture').value; //絞り値
var a = document.getElementById('fheight').value; //画面縦
var w = document.getElementById('fwidth').value; //画面横
var f = document.getElementById('fcl').value; //焦点距離
if(f<0){f=-f;document.getElementById('fcl').value='それはない';};
var t = Math.sqrt(w*w+a*a); //画面対角線
var c = t/1300; //許容錯乱円径
var p = parseInt(100*2*n*c)/100;// 焦点深度
var s = document.getElementById('distance').value; //ピント面
if(s<0){s=-s;document.getElementById('distance').value='それはない';};
s = s*1000; //mmに変換
var h = (f*f)/(n*c); //過焦点距離
var dn = (s*(h-f))/((h+s-2*f)*1000); //被写界深度前端
var df = (s*(h-f))/((h-s)*1000); //被写界深度後端
h = parseInt(h)/1000;
df = parseInt(1000*df)/1000;
dn = parseInt(1000*dn)/1000; //桁揃え
var dm = parseInt(1000*(s/1000-dn))/1000;
var du = parseInt(1000*(df-s/1000))/1000;
if(df<0){ //無限遠の場合の表示
df='∞';
du='∞';
};
document.getElementById('afocal').value= h;
document.getElementById('ssind').value= p;
document.getElementById('dof-n').value = dn;
document.getElementById('dof-f').value = df;
document.getElementById('dof-u').value = du;
document.getElementById('dof-m').value = dm;
document.getElementById('afocali').innerHTML = '過焦点距離<br />'+h+'m';
document.getElementById('dof-ni').innerHTML = dn+'m';
document.getElementById('dof-fi').innerHTML = df+'m';
document.getElementById('dof-ui').innerHTML = du+'m';
document.getElementById('dof-mi').innerHTML = dm+'m';
document.getElementById('focali').innerHTML = s/1000 +'m';
}
function ireset(){
document.getElementById('afocali').innerHTML = ' ';
document.getElementById('dof-ni').innerHTML = ' ';
document.getElementById('dof-fi').innerHTML = ' ';
document.getElementById('dof-ui').innerHTML = ' ';
document.getElementById('dof-mi').innerHTML = ' ';
document.getElementById('focali').innerHTML = ' ';
}
//--></script>
