ふい~なんとかでけた [仕事]
ここ三日ばかり篭って仕事してた。もう2年くらいGUIベースの仕事してなかったから忘れちまっただよ。なんとかスプライン補完のグラフができました。
ポイントは標本点をマウスドラッグで移動したときスプラインのラバーバンドを作成するとこですね。ベジェスプラインと違って結局全点再計算しなきゃならないから、果たしてマウスの動きに追随してくるかどうかが問題だったけどあっさりできたよ。あとは、もう少しチラツキを押えるために、ラバーバンド表示もバッファ化することじゃね。そうすれば恐ろしく美しくなるであろー。
実画面の座標系、実データの座標系の変換だけでなく、表示上のオートスケーリング変換およびY軸のみの倍率変換もかましてるからわけわかんなくなってしまった。軸描画のためにさらにオフセットもしてるからねー。
ちゃんとじゃなくていいんだけどクリッピング処理を入れないと異常に遅くなる。特に拡大してるときはX方向のサンプリングが細かいから数百万座標の計算をするはめになってしまう。これを画面表示部分だけに押えることがミソ。だからといってちゃんとクリッピング処理するとこれまた遅くなるのでやや画面サイズよりオーバー気味に計算して、あとは直線描画下位関数で実クリッピング。
実際にはメモリビットマップに描画、最後に実画面にメモリビットマップ内容を転送。
ラバーバンド描画は今は簡易的に、直接実画面に描画してるけど、NOTXORで処理してるから、前のを消して次のを書くといったことで二度書いてるので処理が重く、どうしてもチラツキが出てしまう。これもメモリビットマップに処理して最後に一回だけ実画面に転送すればチラツキはなくなる。
さて、せっかくだから完璧にするか。
あ。あとヒットテストか。うーん。スプラインヒットテストもやってみるかな。
コメント 0