2008-11-10[n年前へ]
■「ボールレンズ」のネックレス
たとえば、凸レンズの形を描いてみると、その形が球形のガラス玉とよく似ている形であることがわかります。つまりは、ガラス玉は一種の凸レンズです。球形の形をしたプラスチックやガラスは、ボールレンズという名前のレンズであるわけです。曲率が極めて高い凸レンズなのです。
ボールの直径に応じて拡大率が大きくなるので、大きなボールレンズを使えば、大きくものを拡大することができます。・・・といっても、もっとも、球面収差がとても大きいので、周辺部はボケてしまいます。
ちなみに、屈折率が2.0のもので作ったボールレンズが球面収差が一番小さくなります。ランタン系ガラス材料のS-LAH79は屈折率が2.003と2.0にとても近いので、球面収差が小さなボールレンズを作ることができます。
ところで、光学カタログを眺めていると、サファイヤやルビーで作られたボールレンズも載っています。サファイヤ/ルビーは屈折率は1.8弱なので、球面収差は小さくないのですが、その硬さからキズがつきにくいということで、商品化(つまりはよく使われている)されているのです。
サファイアで作ったボールレンズも、ルビーで作ったボールレンズあっても、どちらも直径1cm程度で七千円くらいです。拡大鏡・マイクロスコープを持ち歩く人も多いと思いますが、サファイア・ルビーで作ったボールレンズを持ち歩いてみるのはいかがでしょうか。透明なサファイアで作った「ボールレンズ」をネックレスにしてみたら・・・あるいは指輪にしてみたら・・・お洒落な光学技術者になれるかも?・・・それとも、単に変な光学技術者になってしまうかも?
2008-11-11[n年前へ]
■シャーロック・ホームズにもわからない「青い紅玉」のナゾ
(「ボールレンズ」のネックレスの続きです)ルビーもサファイヤも、酸化アルミニウム(Al2O3)の結晶「コランダム」です。結晶中にクロムが混じると赤色のルビーになったり、鉄やチタンが混じると青色のサファイア(赤色以外のコランダムをサファイヤと呼びます)となったりします。
サファイヤとルビーという言葉を聞くと、コナン・ドイルの「青い紅石」""THE ADVENTURE OF THE BLUE CARBUNCLE""を思い出す人も多いと思います。知らない人は青い?紅石?と思うかもしれませんが、「青い紅石」というのはシャーロック・ホームズが主人公のミステリの題名(の一番有名な邦訳の一つ)です。
コナン・ドイルが「青い紅石」"THE ADVENTURE OF THE BLUE CARBUNCLE"を書いた当時、「カーバンクル」"CARBUNCLE"は「丸く磨いた赤い宝石」を指す言葉でした。それと同時に、その当時はまさに青いコランダム、つまりサファイヤが各地で産出され、広まり始めた時代でもありました。とはいえ、その科学的な定義や名前などはまだ定まっていない時代でもあります。
ですから、シャーロック・ホームズが「青い紅石」で扱った宝石は、「本来は赤色であるはずなのに、青く輝く珍しい貴重な宝石」であるのかもしれませんし、あるいは、現在と完全に同じ意味での「青いサファイヤ」なのかもしれません。
万物に通じていて・信じられないほどの推理力を発揮するシャーロック・ホームズでも、その「青い紅玉」"BLUE CARBUNCLE"が何なのかは、きっとわからない時代だったことでしょう。そう思うと、「青い紅玉」が何なのかというナゾに、とても興味を惹かれてしまいそうです。・・・というわけで、「青いガーネットの秘密―“シャーロック・ホームズ”で語られなかった未知の宝石の正体」を読んでみようと思います。
2012-12-29[n年前へ]
■Rubyで(が)動くデジカメを作る!? キックオフ編
Rubyで(が)動くデジカメ作りに挑戦してみました。コンパクトデジカメ用の特殊ファームウェア(CHDK)に組み込み向けRuby(mruby)を組み込んでみようという試みです。CHDKというコンパクトデジカメ用ファームウェアは、機能拡張用の簡易スクリプト作成言語として、すでにBasicとLuaをサポートしているので、そこに(さらに)Rubyを追加する作業に果たして意味があるだろうか…?という疑問もあるだろうと思いますが、ひとまず挑戦してることにしました。
そこで、まずはCHDKのMain.c中にあるcore_spytask()に、液晶画面に対して"Hello! Ruby!"を出力するmrubyコードを埋め込もう、という作戦を考えてみました。たとえばこんな具合のコードをcore_spytask()に書き入れて、arm-elf-gccでmrubyをビルドした上で(libmruby.aとlibmruby-core.aを作成し)、CHDK のビルド時にlibmruby.aとlibmruby-core.aをリンクしよう、という流れです。(main.cにmrubyをリンクするなら、Makefile中にlibmruby.aとlibmruby-core.aを追加するだけで良いといった理由もあります)
char osd_buf[30]; mrb_value v; mrb_state *mrb = mrb_open(); char code[] = "def hello\n" " \"Hello, Ruby!\"\n" "end"; mrb_load_string(mrb, code); v=mrb_funcall(mrb, mrb_top_self(mrb), "hello", 0); mrb_close(mrb); sprintf(osd_buf, "%s", v ); draw_txt_string(2, 2, osd_buf, conf.osd_color);
トライした結果は、mruby コードをCHDKに埋め込んんだソースはコンパイルできたけれど、arm-elf-gccでのlibmruby.a自体のビルドに挫折した…というものでした(作業に成功したかと一瞬思ったのですが…寝て起きたら動かない…というわけで、ありがちな幻を見ていたようです)。
しかし、失敗はしましたが、コンパイル済みライブラリを誰かが作成したならばコンパクトデジカメのファームにmrubyを組み込むことは容易にできそうだ、という感触を持ちました。
今日は、mruby組み込み挑戦コードをこんな風に書き換えて、そのコードをビルドしたファームでコンパクトデジカメを起動してみました。その起動スクリーンショートが右上の写真です。
printf(osd_buf, "Alas! I have no Ruby now!", v );これはもちろん、オスカー・ワイルドが書いた深紅のルビーを持っていた王子と空飛ぶツバメの物語(「幸福の王子」)の言葉です。