2014年08月の記事一覧201408.31【夏休みの自由工作】昼間なのに「夜景風の写真」が撮れるカメラを作ってみよう!?8月31日の夜、つまり、「夏休みが終わるまであと少し」の瞬間というわけで、夏休みの自由工作をしてみました。作ってみたのは「昼間なのに夜景風の写真を撮ることができるカメラ」です。下に貼り付けたアニメーション画像は、昼間の風景と薄暗い夜の風景を繋いだものに見えます。昼間に撮影されたらしき画像では明るい青空の下に白い高層ビルがそびえていて、夜近くに撮影されたらしき画像では、暗く蒼く陰る空の下でビルの一部分だけが明るい灯りを灯している...ように見えます。見れば、全く同じ人が写っていることがわかります。...実は、このアニメーション画像は「昼間なのに夜景風の写真を撮ることができるカメラ」で撮影された「同じ瞬間に撮影された画像」を使って作り出したものです。それでは、このカメラの仕組みは一体どんな風になっているのでしょうか?右の写真が、「昼間なのに夜景風の写真を撮ることができるカメラ」です。デジカメの前で「3D映画や3Dテレビ用の特殊メガネで使われる偏光フィルタ」をモーターで回転させつつ、動画を撮影するという仕組みです。すると、目の前に広がる景色の光の偏光方向(振動方向)がわかります。光の特性として、「光に照らされた物体自体の色を返す光」と「物体表面で反射する光」の偏光比率は違うという性質があるので、こういうカメラでは「物体自体の色」と「物体表面で反射した光」をそれぞれ分けて知ることができるのです。「物体自体の色」だけの画像を眺めれば、太陽に照らされて鮮やかな色を輝かせる(=表面で反射する光は白っぽく「色を鮮やかでなくしてしまう」ので、表面の反射光を取り除けば色鮮やかに見えるわけです)風景に見え、表面で反射する光だけを眺めれば、ほとんどの場所は暗く陰りつつ・どこか他の場所から放たれた光をビル表面の一部や海の波間が返す景色(そして、わたしたちには夜景風に見える景色)が映し出されるのです。単純な仕組みのカメラですが、映し出される景色は、想像以上に不思議です。本当のところ、実際の夜景で見える景色はその物体自身が光り輝き示す色ですが、このカメラに映し出される夜景風の景色は物体自身が発する色ではなく・他から発せられた光をただ跳ね返すだけの色に過ぎません。そんな風に、正反対の180度違うかに思える光なのに、私たちには区別できず同じように見えるというのが面白いものですね。“になる!」という話があります。「”-1^2′′が”-1′′でなく”1”になってしまうなんて!」「演算(子)の優先順位から言って、^すなわち冪乗演算(子)は減算演算(子)より優先されるはず。”-1^2′′は”-1′′になるはずじゃないか!」「これってトンデモないバグじゃないの!?」とビックリする人もいるかもしれません。“と入力すると、この”-”は「AからBを引く」ということを行う「AとBの間の減算を意味する演算(子)」にはなりません。operator)」として解釈されます。「Aの符号を反転した数を返す演算子」になります。...こう書くと「なんだそれ?Aの符号を反転した数はゼロからAを引いた数なんだから、結局のところ、ゼロとAの間の減算と同じじゃないか!」と思われるかもしれないですが、Excelは(そして少なからずのプログラミング言語も)「AとBの間の減算を意味する演算(子)」と「Aの符号を反転した数を返す演算子」は違うものとして取り扱われます。ちなみに、”=-1^2′′とすると計算結果は1になりますが、”=0-1^2′′とするとエクセルは”-1′′という計算結果を出力します。”-1^2′′と”0-1^2′′は違う値を返します。...なぜかと言えば、”-1^2′′の”-”は「左側に値や変数がなく、符号を反転する単項演算子として解釈される」のに対して、”0-1^2′′の”-”は左側にゼロがあり、ゼロと後続する値の間で減算を行うという減算演算子として解釈されるからです。”=0–1′′と入力すると、特にエラーが出ることもなく、1という値が返ってきます。この場合は、2個ある”-”のうち最初のものがゼロと後続の値間の減算演算子として解釈され、次の”−”は1の符号を反転する単項演算子として解釈されます。単項演算子としての”-”は冪乗や乗算の演算子より優先度が高く取り扱われますが、減算演算子としての”-”はそれらよりも優先度は低く扱われます。”-1^2′′の計算結果は1になるのに対して、”0-1^2′′は-1になるというわけです。”-”を3個でも4個でも問題なく重ねて使うこともできます。1-2-3にならったに違いない!」と言われることも多いのですが、残念ながらそうではありません。negative?)。それではExcelはなぜ「Excelは符号を反転する単項演算子を意味する”-”は、優先度が冪乗よりも高く取り扱う」というルールを採用しているのでしょうか?...「その理由はこうだった!」という確かな理由は定かではありません。昔からビジネス関連のアプリケーションを書くために非常に頻繁に使われてきたプログラミング言語COBOLの文法にならった...という説が一番説得力があるように思われます。それは、(当時FORTRANなどを使っていた)数式を使うエンジニアではなく、”普通の人”が使うような目的には、一般的な演算子優先順位ではなく・「マイナス1の2乗」と言ったら「(−1)の2乗」の方が自然だよね!というわけで、COBOLなどに習ってExcelの演算子優先順位が決定されたという考え方です。...一体どちらが”正しい”の!?」という話題はとても面白いものです。知らない人は眺めてみるときっと面白いと思います。ウェブサイト「hirax.net」主宰。かりを日々研究している。著書に「論理的にプレゼンする技術―聴き手の記憶に残る話し方の極意」(サイエンス・アイ新書)など。スリ」正しい説はどれだ!?高さ35cm以下の小便器を保証しようとする日本は「世界一の小便バリアフリー王国」かもしれない。ラジオ『ベストセラーを読んでみた。見せて通じる英会話ガール毎月10人の学生に届く招待状。