「サイエンス記事」カテゴリーアーカイブ

青と黒のドレスか白と金のドレスか?それが問題だ。

2014年頃に話題となったドレス問題。
プログラムで作図してみました。
aの領域とbの領域は同じ色です。
aは青と黒に見える、bは白と金に見えるのではないでしょうか。しかし、どちらも同じ色なんです。

やってみて面白かったことは、問題のドレス写真が自分には今まで青と黒にしか見えなかったのに、作図したあとに問題のドレス写真を見ると白と金に見えるようになったり、どちらにも見えるようになったということ。
条件を変えていろいろ実験もできそうです。

参考文献
Kitaoka, A. (2014). Color Illusions Accompanied by Color Constancy Phenomena. Demoes at the Exhibition, International Symposium on Psychological vs Mathematical Approaches to Optical Illusion (Tokyo Symposium on Optical Illusion 2015), Meiji University, Nakano Campus, Tokyo, Japan, March 5-7, 2015.

1980年頃のプログラミング教育事情

1980年頃、大学では「算法通論」という授業がありました。算法通論のテキストのまえがきを見ると「本書は東京大学教養学部の第4学期に、工学部進学予定者のために開講されている「算法通論」の教材である」とあります。
内容はFORTRANによるプログラム作成法の基本と、数値計算法の初歩となっています。
毎週2時間ずつ15週間程度でこれをこなすことができると書いてあります。
教科書としてはJIS FORTRAN入門という本を使用していました。

IMG_3233_resize

プログラムはデータカードに穿孔し、これを大型計算機センターに持参して機械で読み取り計算させていました。

IMG_3236_resize

数値計算法の教材としては下記のものを使用していました。
今見ても基本的な数値計算法としては遜色ないもののように思います。

IMG_3237_resize

Z80ワンボードマイコン

1980年頃、パソコンはまだ出始めた頃で非常に高価でした。
このとき、救世主となったのがTK-80などワンボードマイコンのトレーニングキットでした。
しかしそれでも標準価格は88,500円と学生にとっては高いものでした。
このときコンピュータ・リサーチ株式会社からCRC-80というワンボードマイコンキットが標準小売価格29,800円で発売されました。私も1981年に家庭教師のバイト代で購入し、半田ごてを片手に奮闘し徹夜で組み立てました。
残念ながらそのボードは廃却してしまいましたが、ネットで検索すると写真を見ることができます。著作件の関係でここでは、図に描いたものを載せておきます。

CPUはZ80で2.5 MHzクロック。
メモリも1KB程度だったようです。
表示装置は7セグメントLEDが6桁(アドレス4桁、データ2桁)で16進数を表示できます。
入力装置はキースイッチが25個で16進数を入力できるほか、9個はファンクションキーです。
入力したプログラムデータはカセットテープに1200bpsで「ピーヒョロロロ」と音をたてて記録していました。

CRC-80

プログラムは機械語を16進数で打ち込むため、参考書としてZ80の本のお世話になりました。

IMG_3230_trim

機械語はこんな感じで、当時は音声を1,2秒録音し、それをだみ声で再生する、音声合成のはしりみたいなことをやっていました。
ハードを扱うという意味では今でいうラズベリーパイに近い感覚かもしれません。

IMG_3232_trim

ポケットコンピュータ PC-1211

1981年に購入したポケットコンピュータ PC-1211です。この年には東芝のパソピアというパソコンも発売されていますが、まだまだパソコンは高価な時代でした。
このPC-1211も43000円と高価でしたが、大学生でもバイトして頑張れば買える値段で、ちょっと流行っていました。
数年前までは実際に使えていましたが、残念ながら24桁×1行表示の液晶部分がダメになってしまいました。メモリは2KBです。

プログラミングできるのが優れたところで、BASICで月軟着陸ゲームを作ったり、バイオリズム計算をしたりしていた時代です。

IMG_3239

IMG_3241_trim

IMG_3242_trim

1000羽の鳥たちが作る群れ

NHKのプラネットアースIIを見ていたらヒッチコックの鳥のような光景がロンドンで見られるとのことでした。都市の暖かさを求めて集まってくるようです。100万羽のムクドリが織りなすパターンは非常に興味深いものでした。
ここでは、1000羽の鳥を空に放ってどうなるか様子をみてみました。
鳥の初速度ベクトルは乱数で決めています。
基本のルールは3つです。
1.まわりの鳥たちとなるべくぶつからないように飛ぶ
2.まわりの鳥たちの平均速度ベクトルに自分も合わせて飛ぶ
3.まわりの鳥たちの平均位置に向かうように飛ぶ
1000羽の鳥一匹一匹がこのルールに従って動いています。
すると自然にいくつかの群れができます。
これも「単純な法則が複雑な世界を創る」という事例です。

自律する魚たちがつくる群れ

Ex-Gramプログラミング教室の上級コースでは人工生命や人工知能をテーマとして様々なプログラムを作成していきます。
人工生命の初歩として自律して動きまわる魚(鳥)たちが形成する群れをコンピューターで再現してみましょう。フロッキングと呼ばれるプログラムです。flockは集まる、群がるという意味です。

群れを作るには分離・整列・結合の3つのルールが必要です。
分離は近隣の魚オブジェクトとの衝突を避けることです。
整列は近隣の魚オブジェクトと同じ方向(平均速度)に進むことです。
結合は近隣の魚オブジェクトの中心(平均位置)に向かって進み集団を維持することです。

このような単純なルールに従う自律する魚たちが自然に群れを形成する事例は「単純な法則が複雑な世界を創る」ことを示す良い事例だと思います。

ピンク色の円が緑色に見える不思議な錯視

ライラックチェイサー錯視は、中央の黒い点を注視していると、回転するピンク色の円が緑色に見えてくる不思議な錯視です。さらに中央の黒い点を注視していると、なんとピンク色の円がすべて消えてしまいます。

プログラムでは座標変換をうまく使いながら円の欠損部分を回転させています。
さらにぼかし処理を加えています。

網膜にはL(赤)、M(緑)、S(青)の3つの錐体がありますが、これらの信号が直接脳に入力されるわけではありません。
反対色応答していると考えられています。
反対色応答とは目から入ってくる光が、「赤-緑」「黄-青」という2つの信号になって脳に入りこの組み合わせで処理されることです。
赤を見続けて感度が低下すると「赤-緑」のバランスがくずれます。その状態で灰色を見ると緑が見えるということです。
緑は赤の補色(混ぜ合わせると灰色になる色)です。

拡張現実でパフュームをゲット

AR(拡張現実)とは人が環境から受け取る物理情報に対してコンピューターによるデジタル情報を重ね合わせることにより対象物の情報を増強する技術です。

ARには幾何学整合性、時間的整合性、光学的整合性が必要となります。

マーカーベースのARを用いてスマホ上にパフュームを表示してみました。
Ex-Gramの中級コースではこのようなARのプログラミングを行い、どのような応用ができるか生徒さんに考えてもらっています。

チェンジブラインドネス

下の画像は明らかに変化しています。なのにどこが変化したか気付く人はなかなかいません。
認知の分野では有名なチェンジブラインドネスです。

中学生・高校生向けプログラミング教室Ex-Gramの中級コースでは様々な錯視をとりあげ、人間の視覚のメカニズムや認知のしくみについて考察します。

生徒さん一人一人ががどのようなチェンジブラインドネスを作成するか考えます。こんなに変化させたらバレバレだと思いながらも、いざ発表すると誰も気付きません。
発表者が得意満面になる瞬間です。
視聴している生徒さんはもう一回見たい、もう一回見たいと盛り上がります。

ただ、うまく作らないと失敗する生徒さんもいます。見た瞬間にわかるものもあります。
どこをどのように変化させれば良いのか?

何種類ものチェンジブラインドネス動画を作成し、いろんな人に見てもらった結果を自由研究にまとめた生徒さんがいました。
見事、学校の学年代表に選ばれ区の大会に進んだとのことです。
自由研究で学年代表に選ばれたのは2例目です。

チェンジブラインドネスはまだまだわかってないことも多いと思います。
生徒さんには、わかってないことにもチャレンジしてもらっています。

夏休みには花火を作ろう!

花火を作ると言っても本物の花火を作る話ではありません。
プログラミングにより打ち上げ花火のような映像を作成しようということです。

Ex-Gramプログラミング教室の中級コースでは粒子系を扱います。
たくさんの細かい粒子の挙動をシミュレーションすることができます。
この粒子系を打ち上げ花火に応用することができます。

花火の玉の中には空中で光る「星」と呼ばれる火薬の小さな玉がいっぱい入っています。
この小さな玉を粒子と考えます。

花火が打ち上げられるとを星を勢いよく飛ばすための火薬により星が四方八方に飛んで行きます。
粒子にいろいろな方向の初速度を与えることでこの状況が再現できます。

その後、星(粒子)は重力により落下していきます。プログラムでは常に重力加速度が粒子に適用されるようになっています。
さらに粒子には命(ライフ)を与えています。
ライフが時間とともに少しずつ減っていき0になると粒子が消滅するようにしています。

さらに工夫するといろいろな花火が出来そうです。