ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2012年06月20日

2次ベジェ曲線の点

頻繁にテクスチャの文字を生成するのが処理速度の負担になるようなので、文字表示の方法を変更してみる。

ちょうど自分で作った手書きのANKのフォントのベクタデータがあったので、それを使って線を引くようにしてみた。
まぁこれはこれで軽いとはいわないが、テクスチャを作る処理がなくなったので風通しは良くなった気がする。

それでそのフォントのデータがもともとフラッシュ用だったので2次ベジェ曲線で記述されていた。それを自力で展開。

2次ベジェ曲線の中間点を得る関数。

void getBezier2Point( float p0x,float p0y,float p1x,float p1y,float p2x,float p2y,float t,float* rx,float* ry ){
// p0,p1,p2から成る2次ベジェの媒介変数(0<=t<=1)の時の座標を得る。

float ox = 0;
float oy = 0;

float tmp = (1-t) * (1-t);
ox += tmp * p0x;
oy += tmp * p0y;

tmp = 2 * t * (1-t);
ox += tmp * p1x;
oy += tmp * p1y;

tmp = t * t;
ox += tmp * p2x;
oy += tmp * p2y;

*rx = ox;
*ry = oy;
}
posted by みこあいさ at 11:44| C++