1: 2010-04-13 (火) 23:19:54 kemeppo[5] [6] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | &ref(zu31.png) | ||
+ | でも、実際にいくつか試してみたら、どうもあまり綺麗じゃない形になるケースがあった。 | ||
+ | べつの方法を考えてみよう。 | ||
+ | |||
+ | |||
+ | 点Aと、点D、の位置情報をヒントにして、線CDをグニャらせてみてはどうか? と思った。 | ||
+ | &ref(zu32.png) | ||
+ | 線AB、線BC、線CDをず~~っと伸ばしていろいろ落書きして考えてたら、 | ||
+ | どうも三角形ができるっぽい規則に気づいた。 | ||
+ | |||
+ | 線ABと線BCの線の交点をPとして、辺BCと結んで三角形が作られるので、 | ||
+ | 「BCをぐにゃっと変形させる範囲は、あくまで、この三角形内に留めれば、 | ||
+ | 本来のBCラインから、あまり掛け離れすぎずに済むだろう…!!」とひらめいた。 | ||
+ | |||
+ | |||
+ | |||
+ | &ref(zu33.png) | ||
+ | あとは、前回と同様に、横の%を縦の%と対応させる方法でやってみる。 | ||
+ | ”BCの差分”を得て、BCと足し合わせるって感じのイメージ。 | ||
+ | アールの感じが以前の方法よりも、控えめで自然な感じになってるような気がする。 | ||
+ | |||
+ | しかもこれだと、A(-1-1), B(0,0), C(1,1), D(2,0) の場合に、BC とピッタリ重なる!!(三角形が線みたいになって、辺BCが重なるから) | ||
+ | この「変わらない場合は変わらない」ってケースがはっきりしてるのが、なんとなく正しいことをやってるような気がしてうれしい。 | ||
+ | |||
+ | おわり。 | ||
+ | |||
+ | |||
+ | |||
+ | 余談: | ||
+ | efg01で、適当な時間毎に PPM形式 のベタ画像ファイルを高速に、交互に書き出して、それを外部の別ソフトで表示することで | ||
+ | efg01で間接的にグラフィック表示処理を行えるのでは?と思ったので試そうと思って、とりあえず表示側をQtで書いてみました。 (注:linux用実行バイナリーです) | ||
+ | &ref(pixmap0.0.1) | ||
+ | |||
+ | これと同じディレクトリ内に fb0.ppm と fb1.ppm という名前の、二枚のPPM形式の画像を置いておけば、1/30秒毎に有効な方を表示します。 | ||
+ | fb0.ppm, fb1.ppm ともに画像サイズは 320x240決め打ちです。ゲームゲームしたサイズですね… | ||
+ | |||
+ | |||
+ | 優先順位は fb0.ppm 側なので、両方有効なら、つねに fb0.ppm が表示されます。 | ||
+ | たとえば fb0.ppm を、ファイル名を変えるとかして PPM画像 と認識されないようにすると、 fb1.ppm が表示されます。これでパラパラ漫画をやってください。 | ||
+ | つまり fb0.ppm の有効・無効の切り替えでパラパラできます。 | ||
+ | |||
+ | まだ試してませんが、efg01で この2枚の画像を1/30とかで交互に書き換えて、有効・無効を毎回切り替えてやれば、動く絵が描けるかもしれないなぁ~…と思ってます。 | ||
+ | めんどくさいので試してませんが。 | ||
+ | ようするに、単純な話、fb0.ppm と fb1.ppm の2枚の画像で、ダブルバッファリングのフレームバッファーをやっちゃおう…って発想です。 | ||
+ | だれか元気な人、実験よろしくお願いします。 | ||
+ | |||
+ | |||
+ | (!) | ||
+ | 将来的にefg01にはグラフィック描画機能が追加されるそうなので、 | ||
+ | そのときに、移植作業がラクに済むように、あまり直接 fb0.ppm fb1.ppm のピクセル配列にダイレクトに書き込んだりはせずに、 | ||
+ | いったん描画関数を間にはさんで描き込んだ方が、将来実装されるefg01グラフィックAPIへの置き換えの際に、移植作業が少しだけラクになるので良いと思います。 |
(This host) = http://osask.net