How do I create a curved line or filled circle or generally a circle using C++/SDL?

Hello I've been trying for ages to make a pixel circle using the putpixel function provided by SDL main website here is that function :

``````void putpixel(int x,int y , int color , SDL_Surface* surface)
{
unsigned int *ptr = static_cast <unsigned int *> (surface->pixels);

int offset = y * (surface->pitch/sizeof(unsigned int));

ptr[offset + x] = color;
}
``````

and my question is how do I curve a line or create an circle arc of pixels or any other curved shape then a rectangle or singular pixel or line.

for example here are some pictures

filled pixel circle below enter link description here

now my idea was too

change the x and y value of the pixel position using + and - to create the curves but in practice didn't provide the correct results

what my results are in this is to be able to create a circle that is made out of pixels only nothing else.

thank you for anyone who takes the time to read this question

thanks! :D

-

For curves you can use Bezier Curve. The parametric equation is what you are looking for ;)

Using Bezier Curves, you can draw lines too, all you have to do is use the Linear Bezier Curve.

For circles, you can also use parametric equations, and a quick Google returned me this awesome website: Link!.

But one can also use something like Midpoint Circle for filled circles. See this question: http://stackoverflow.com/questions/1201200/fast-algorithm-for-drawing-filled-circles

-

To draw a circle one pixel at at time, you can do something like this

``````int centrex=100,centrey=100;// centre of circle in pixel coords

float two_pi=6.283f;

for(float angle=0.0f; angle<= two_pi;angle+=angle_inc){