SDL2 で楕円を描く

 今度は楕円形を書いてみたいと思います。

 下の図のような楕円形を考えます。

楕円

 この楕円の方程式は以下のようになります。

楕円の方程式

 円と同様に、x から y を求めると以下の計算になります。

x から y を求める

 これを関数にすると、以下のようになります。

void draw_oval(SDL_Renderer *renderer, int sx, int sy, int a, int b) {
    int x, y, px, py;

    for( x = -a; x <= a; x++ ) {
        y = sqrt(1.0 - (double)(x*x)/(a*a))*b +0.5;
        px = sx + x;
        py = sy - y;
        SDL_RenderDrawPoint(renderer, px, py);
        py = sy + y;
        SDL_RenderDrawPoint(renderer, px, py);
    }
    for( y = -b; y <= b; y++ ) {
        x = sqrt(1.0 - (double)(y*y)/(b*b))*a +0.5;
        px = sx + x;
        py = sy - y;
        SDL_RenderDrawPoint(renderer, px, py);
        px = sx - x;
        SDL_RenderDrawPoint(renderer, px, py);
    }
}

 この関数を使い、楕円を描くことができます。a と b が 等しければ円になります。

楕円の描画

 次はこの楕円を回転させてみましょう。

SDL2

Posted by sirius