2010年9月19日日曜日

つまらん。つまらな過ぎる。

俺の脳内ではこのタイトルは「風が語りかけます。うまい!うま過ぎる。」にかけているのだが、そんなことはきっと誰にもわからないだろう。こうして説明してもまだ一部の人々にしかわからないだろうし。

夏は何も遊んでない。

秋だ。秋のほうが好きだ。食い物もうまくなり、爽やかな気候で、魚も釣れるようになってくる。

でも、今は事情がありクルマに乗れないから釣りには行けない。電車で行く根性が俺にはない。

さて、クルマがどうの以前に仕事が忙しい。忙し過ぎる。

だから釣りどころか、せっかく買ったデジイチでの写真撮影もままならない。だってこれ書いている今も、休日出勤の帰り際。

それでもヤケクソで、会社の近くで景色でも撮ってやれと。そう思ってふと、例えば18mmというレンズは角度にして何度の範囲が撮れるのだろうかと気になった。

これがわかれば、地図をみて、この地点からこっちを撮ったら、ここからここまで写るんだなー、ふーん、とかってわかるわけ。Google地図なんかと組み合わせると結構、楽しそうだなあと。・・・いや、そういうアプリを作るとかって話じゃないよ。そんなの面倒だから画面に分度器当てるよ俺は。分度器なら紙の地図帳でも使えるしな。

でも、角度の計算は、数学が苦手な俺には難しいのでコンピュータ(別名、計算機)の力を借りようと。ちょうど開発環境が開いていたので、Excelより手っ取り早いだろうと、Javaで計算プログラムを作った。
public class Perspective {
public static void main(String[] a){
int[] f = {0, 18, 35, 50, 135, 200};
for(int i : f)
printDegleeOfPerspective(i);
}

public static void printDegleeOfPerspective(int f){
double halfwidth = 23.4 / 2;
double focus = f;

double r = Math.sqrt(Math.pow(focus,2) + Math.pow(halfwidth, 2));
double degree = Math.asin(halfwidth * Math.sin(Math.PI / 2) / r);

System.out.println(String.format("[%4smm] D=%s",f , Math.round(2.0 * 180.0 * degree / Math.PI)));
}
}



実行結果。

[ 0mm] D=180
[ 18mm] D=66
[ 35mm] D=37
[ 50mm] D=26
[ 135mm] D=10
[ 200mm] D=7


たぶん合ってると思う。

D=というのが「度」。

つまり、18mmなら66度の角で挟んだ範囲が横方向で収まると。

計算式は、18mmというのが撮影面までの焦点距離だというならば・・・と、中学生の数学の問題のように三角を書いて考えた。
思惑通りに計算できて、ちょっと満足してから、もう一回ネットを検索したら、もっと簡単な計算式が出ていた(tangentを使ってた)。

・・・そう言えば昔、数学の時間に、いろいろ覚えるのが嫌(苦手)で、なるべくタンジェントを使わないで計算していたのを思い出した。相変わらず、というか、それ以降に数学スキルは伸ばしてないから当たり前か。

だから俺って数学ダメなんだなあ・・・と、かえってガッカリした。

けど、公式をあまり知らないで答えが出るならそれもアリではないか?とまた気を持ち直したりして、まあ意外と面白いよねうん。

帰ろ。


1 件のコメント:

  1. ちなみに、定数がどうたらdoubleの丸め誤差がどうたら言ってはいけない。

    返信削除