ベジェ曲線描画ルーチンのプリミティブバージョンがあります。ここにあります
void DrawBezier(float ax, float ay,
float bx, float by,
float cx, float cy,
float dx, float dy, unsigned color)
{
float step = 1.0/1000.0;
for(float t=0; t<=1; t+=step)
{
float u = 1.0-t;
float a = u*u*u;
float b = 3.0*u*u*t;
float c = 3.0*u*t*t;
float d = t*t*t;
float x = ax*a + bx*b + cx*c + dx*d;
float y = ay*a + by*b + cy*c + dy*d;
SetPixel(int(x),int(y), color);
}
}
少なくとも私の古いペンティアム4では、float-> intのキャストが遅いため、これは非常に遅いです(このようなキャストは、ここでは実際に90%の時間を消費しますが、setpixelがコメントされている場合は30kベジエ/秒です)。
それで、私はそれを固定小数点アーティメティックに書き直すというアイデアを思いつきましたが、私はこれについてあまり経験がありません-固定小数点に書き直す方法は?(tが0.0から1.0の範囲にあることに注意してください)
編集:質問の2番目の部分:ベジェ曲線の長さをピクセル単位で見積もる方法(ピクセルを描画する必要があります)?わからない