技術的な話、数式表示について
以下備忘録。次プログラミング出来るのがいつになるかちょっと分からないので……。
今現在Draw Graph中の文字は上付き文字と下付き文字を備えているだけで、それ以上の数式が扱えないという弱点があります。
そこをどうにかこうにかしたいのですが、Word 2007みたいな数式エディタを作るのは労力的にも力量的にも難しいため、これからも画像出力という側面では機能強化することはできそうにないです。
ただ、このアプリケーションの仕様用途として、EPS出力(現在未実装)→TeXというものを想定しています。この使用用途の場合、PSfragというEPSファイル中の文字を数式に置き換える事の出来るLaTeXのパッケージを用いることで解決できます。
難点は、各ユーザがTeX環境にpsfrag.styをインストールしなければならないことと、PSfragを用いるとかなり工夫しない限りdvipdfmxが使えないこと……後者は自分にとってかなり痛い。
それで他の方法はないかなぁと考えていた所、eps出力と同時にLaTeXのpicture環境によって文字列のみを付加するTeXファイルも同時に生成すれば良いと気づきました。
最初は完全にLaTeXのpicture環境及びその拡張(pict2eやtpic)を用いたtexファイルを生成する方法を考えていたんですが、これもパッケージをインストールしなければならないのと、アプリケーションで作れる図をこの環境で完全に表現することが困難そうだったため見送りに。
それで悩んでいたのですが、色々調べている内にTgif2texというドローソフトTgifによるepsファイルをTeXファイルに組み込むプログラムがあることが分かりました。そこでは上のようにepsファイルとpicture環境の併用で図を表現しているようでなるほどなぁ思ったわけです。
なんやかんやで解決しそうで一安心……しかし実装はいつになるのか。
プログラムの最適化&スタンドアロン版を設置
下に書いたAIR版とは違うのですが、使っているWebブラウザのFlash Playerで上手くいかない方向けに、 Flash Player同梱のスタンドアロン版を出力しました(現状Windows版のみです。keio個人ページのアップローダがあまり重いファイルを受け付けてくれなくて…)
これでブラウザを経由することなくアプリケーションが立ち上がります。 パフォーマンスもブラウザ経由より若干よくなるみたいです(このアプリケーションだとあまり差は分からないかもですが)
それとは別に、プログラムの最適化を行いました(リスナーの数や他クラスのプロパティ参照回数を減らすなど)
そんなに処理速度は変わってないっぽいですが……設計から見直せばもっと早くなるかも……しかしプログラムが大きくなりすぎて手を付けるのが怖いです。
とりあえず100頂点完全グラフが僕の環境でなんとか描画できるので、とりあえずOKということに。またAIR版完成時に見直すことにします。
あとアプリケーションのインターフェースに関して、とても得難く良い意見を頂くことができたので、ここは改善して行きたいなと思います。
具体的にはプロパティウィンドウと変更が適応される選択頂点、図形との位置が遠くてつながりが薄いという問題点には、 各オブジェクトにポップアップの右クリックメニューを作る。
文字オブジェクトの上付き文字、下付き文字のプロパティ設定(位置など)が直感的でないという問題に対して、 各付属文字の直接のドラッグによる調整機能の追加(位置の面の解決にしかなってませんが…)を行いたいなぁと。
後は早くマニュアルを作らないとー……。しかしイベントで埋まっていて年内のプロジェクト終了は難しくなったかもと感じます。 年明けは中間発表の準備がありますし、スケジュール管理をよりしっかりしないなぁーと思う今日この頃でした。
グラフ描画アプリケーション"Draw Graph ver1.00"公開
"Draw Graph"はグラフ理論におけるグラフを描画することに特化した、シンプルなグラフ描画アプリケーションです。
開発言語はActionScript3.0であり、このアプリケーションはWebブラウザに搭載されたFlash Playerによって動作します。 下のリンクからアプリケーションのページに行けますが、上手くいかない場合はAdobeのサイトより最新版のFlash Playerをインストールしてみて下さい。
Draw Graph(800*600)(現在非公開)
Draw Graph(1500*1000)(現在非公開)
注意:ver1.00現在、本アプリケーションはファイル出力機能を備えていません。しばらくはOSによるプリントスクリーン機能をご利用下さい。
その他の細かい使用方法に関しては、右のナビゲーションにあるマニュアルを参照して下さい。
■出力系の話と、AIR版について
上にも書きましたが、現時点で描いたグラフをファイル出力する機能はありません。 というのも通常のswfファイル(いわゆるFlash)はセキュリティ上の観点から、ファイルの読み込みや出力が制限されていて、 そのままではtxtファイルやbmpファイルを出力してローカルに保存すると言ったことが出来ません。
この問題の解決にはサーバサイドにデータを送信して、CGIを用いてファイルをダウンロードさせる方法がありますが、 スタンドアロンで動作しなくなるのでこれ以外の方法を取りたいと思ってます。
具体的にはFlashと同じ環境で開発が出来るAIR版を制作するつもりです。 これだとデスクトップアプリケーションになりますが、ファイル出力は容易にできます。
AIR版には画像のbmp出力とeps出力、作業保存のためのgraphファイルやデザインのスタイルファイルを実装したいなと思います。
ただこれからPostScriptを勉強しなければならないことと、開発は数学の勉強と就活の合間にしかやる時間がないので、完成には今しばらく掛かりそうです……。