- 追加された行はこの色です。
- 削除された行はこの色です。
[[Hirofumi Fujii Start Page]]
* Simple Vector Graphics [#qdc5fb3e]
平成22年度初頭に、技術職対象の C++ programming 入門を計画している。
入門とは言え何か形の見えるものが欲しい。Console 型の application でも
よいかも知れないが、いまどきなので、できれば簡単なものでよいので
graphic 出力までもっていきたい。
- 技術職対象ということで、数値データの可視化が最も適していると思うので、vector graphics でやりたい。
- OS 非依存にしたい(少なくとも Windows と Linux で、同じように動く)
- 標準化と普及が進んでいるものにしたい(マニュアルや解説が、そこらじゅうにころがっているもの)
という視点で眺めてみたのだが、、
相変わらず vector graphics の世界は混沌としている(涙)。
** SVG (Scalable Vector Graphics) [#ld43979a]
長所:
- W3C で標準化が行われており、Web ブラウザで見ることができる。
- SVG-Tiny など、携帯電話などへも普及が図られている。
- SVGTiny など、携帯電話などへも普及が図られている。
- XML ベースであり、他の文書(xhtml など)との連携も容易(原理的には)。
短所:
- 表示は別 program なので、結果がすぐに見えるわけではない。
- W3C の recommendation にもかかわらず IE で native には support されていない。
かつ IE で最も良い SVG 表示 plugin であった Adobe SVG Viewer が support を
止めてしまった(ダウンロードは今でもできるが、、)。
- XML ベースではあるが、現実的には他の文書との連携はブラウザによって方式がまちまち。
なんだか Web の覇権争いの様相で、Microsoft が VML の手前かどうか、SVG を support
していない間に Macromedia Flash による表示が勢いづいていたと思ったら
Macromedia Flash は Adobe に買収されて Adobe Flash になり、
Adobe は IE の SVG Viewer の support を止めてしまって、、
日本の携帯電話メーカーはこぞって SVGTiny へ(ナビや地図機能で)流れている
みたいではあるが、携帯電話市場では日本のメーカーなんてマイナーもいいとこだしな、、
(日本は携帯電話のガラパゴスと揶揄されてるぐらいだし)。
私の昔のノートをひっくり返してみたら、2000年12月2日の日付で規格や対応状況を
調べている(特に日本語文字列を扱うことを念頭に utf-8 の通り具合を)。
丁度9年前か、、規格化は進んだが対応状況はあまり変わってないじゃないか、、
** OpenGL [#l698e09a]
長所:
- ライブラリであり、appication から直接出力できる。
- OS 非依存。
- GUI 特有のイベント処理が、かなりうまく隠蔽されていて、従来型 programming との
違和感が少ない。
- 3D が(3D にしては)楽に扱える。初期配置さえちゃんとできてしまえば、座標
変換行列をちょこちょこ変えるだけで、自動で陰面処理しながら object がクルクル回る
なんて芸当も簡単にできる。
- 充実のアニメーションやテクスチャ機能(笑)、、あくまで 3D を想定しているので、
テクスチャの立体 object への貼り付けとか object を動かすために、
一定時間ごとに callback をかけるなど、その手の機能が充実しているので楽しいかも。
短所:
- Core module では、window の生成や入力などを扱うことができず OS や graphic system
依存になる。これを避けるには、GLUT module が必要であるが、windows には標準では
インストールされていない。
- テキストが(一筋縄では)出せない。
- テキストが(一筋縄では)出せない。というか core には無い。自分で font data を
用意して bitmap やら outline から線やら多角形を生成して作る。
もちろんそういう別途 library はあるにはあるが、別途インストールが必要。例えば
freefont なども入れる必要がある。
- 3D が main なので、使い方も含め「簡易」とは言い難い。
- widget 使おうとすると glui など別 module が必要。
うーん、graphics の core 部分はともかく、周辺が揃ってないというか、
時代遅れというか、、
うーん、graphics の core 部分(特に 3D まわり)はよく揃っている感じだが、
周辺が揃ってないというか、時代遅れというか、、
そもそも、各 module も congire; make; make install とはいかないみたいだし、、
glui にしても、ファイル選択 dialog も無いみたいだし、slide bar も無いみたいだし、、
本当に core の部分しか整備されていないという感じだ。
Programing 的には main() で始まるし、core は server-client model で
表示系は server 扱いなので、これをそのまま class 化してしまうのは
素直だと思うので、面白いのは面白いと思うのだが、、
** wxWidget [#v155bb16]
これはもう vector graphics 云々というよりは、window tool kit で、当初考えては
みたが、GUI 型の programming なので、callback だ event loop だのかなりの
予備知識が必要で、とても programming 入門 level で扱えそうにない。
** gnuplot など外部 program を使う [#ia2f9c83]
まあ、これが一番簡便ではある。pipe を使うという手もあるだろうが、
一時ファイルを作って、それを経由させれば非常に簡単。
しかし、例えば gnuplot だと、単純な線を引く(軸無しで)とか四角を書くとか
丸を書くとかがよくわからん、、簡単な図も書けるとよいのだが、、