円の中心からピクセルごとに(時計回りに)1行ずつ円を描きたい。しかし、ピクセルを再描画するのは避けてください(これは遅いです)。C++の中心からピクセルを塗りつぶして描画しますか?
これは、各ターンに1回だけ更新される「レーダー」のようなものだと想像してください。
すべての塗りつぶしピクセル(前の最大ラインポイント)とGPUまたはハイレベルライブラリ(DrawPoint(x、y)関数による描画)の配列を保持するRAMはありません。
私はラインとポイント描画する機能を持っている:
void DrawLineFromCenterXYToAngle(int centerX, int centerY, float angle)
{
.... instead of angle it is possible to find points of the circle and iterate it
.... find line points by Bresenham's line algorithm
{
DrawPoint(int x, int y);
}
}
void DrawPoint(int x, int y)
{
PixelDraw_Slow(x,y)=GetColor_VerySlow(x,y);
}
は今、私は角度を反復処理し、非常にゆっくりので何回も再描画中央のピクセルの円を得ました。そして、最適化が必要です。
これは速くなると形状が真円にならない場合があります。
標準の 'C++ 'にはGUIの概念がないので、いくつかのライブラリを使用しなければなりません。どのライブラリを使用しているのかわからないので、私たちが手助けするのは難しいでしょう。 – drescherjm
私たちがあなたの実装を手助けできるように、どのように反復しているかを示すべきでしょう。 – drescherjm
これは役に立たないマイクロコントローラのルーティンです。例えばボイドAdafruit_GFX_AS :: drawLine(X0 int16_t、int16_tのY0、 \t \t \t int16_tのX1、int16_tのY1、 \t \t \t uint16_t色){ 急= ABS(Y1 - Y0)int16_t> ABS(X1 - X0)。 if(steep){ swap(x0、y0); swap(x1、y1); } if(x0> x1){ swap(x0、x1); スワップ(y0、y1); } int16_t dx、dy;dx = x1-x0; dy = abs(y1-y0); int16_t err = dx/2; int16_t ystep; if(y0
user1329019