ARToolKitのsampleVRMLがようやく動く
他の雑務の合間にちょろちょろと実験しているARToolKitだけど、 OpenVRMLを使うサンプルプログラム(sampleVRML)がMac OS Xで 動かず、手間取った。 簡単に言えば、慣れないXcodeのルールを分かってないだけだった。
コンパイル中のエラーを見ると、C++のメソッドがたっぷり出てきたし、 名前修飾(mangling)のルールがgccのバージョン違いで発生しているのかと 思っていた。でもgccのオプションを調べてもgcc-2.Xと3.Xは違うみたい だけど、その後は特にトラブルの解説もない。
実は単純に、openvrmlのダイナミックリンクライブラリlib*.dylibの コピーする先が違ってただけじゃん。やっぱりXcodeとか慣れない統合環境は、 解ってないなぁ…
共用体と列挙型、グラフィックディスプレィの構造
構造体の続きということで、共用体と列挙型の説明を行う。 後半は、中間試験以降のグラフィックスの導入ということで、 ディスプレィの構造について説明する。
共用体と列挙型
共用体の説明ということで、異なる型のデータを保存する場合で、その型のうちのどれか1つ という場合には、共用体を使うということで説明を行う。
union Data { int integer ; double real ; char string[ 10 ] ; } ; union Data x[ 3 ] ; x[0].integer = 1234 ; x[1].real = 1.234 ; strcpy( x[2].string , "斉藤" ) ;
ただし、上記の例はどの型のデータが保存されたのかヒントになるような情報も 保存しなければ不便だけど….
列挙型は、プログラムの中でデータを区別するためのヒントのような情報で数値を列挙したい ときに使う。
enum Week { SUN , MON , TUE , WED , THR , FRI , SAT } ; enum Week w ; for( w = SUN ; w <= SAT ; w++ ) { if ( w == WED ) { // 水曜日の処理.... } }
グラフィックディスプレィの構造
グラフィックスのネタの導入ということで、最近のディスプレィの構造を説明する。
- CRT(ブラウン管)
- 高電圧を使った電子銃から飛び出た電子を、偏向ヨークで画面上の電子のぶつかる場所をコントロールする。ディスプレィの表面には電子がぶつかると光る蛍光体を塗ってある。 古くは、一筆書きで描くようなベクトルスキャン方式があったけど、 普通のテレビなどは、ラスタースキャン方式で電子のあたる場所を左右移動しながら上下移動することで、画面一面に情報を表示する。 色を表現する際には、各色の電子をとばし、スリットを抜けた電子のぶつかる場所に応じて、 違う色の蛍光体を塗っておく。 欠点は、巨大なディスプレイが作りにくい。厚さを薄くできない。
- 液晶
- 液晶は、電圧によって通り抜ける光の偏光方向をコントロールできる。 透明電極が配線されたガラス板の間に液晶を入れ、これを偏光板とカラーフィルタと重ねる。 液晶で発光を細かく制御しにくいため、色の再現性が悪かったり、偏光方向が変わるまでの 時間がかかるため、残像がでる。偏光板と液晶のずれから、横方向からだと表示が見にくくなる などの問題がある。
- 有機EL
- ドットごとにLEDが並んでいるような構造。現段階では巨大なモニターは作りにくいけど、 発色がいい。
- プラズマディスプレィ
- 電極と発光部の間にガスを封入して、その間に高電圧を加え放電させて光る。