# 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

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){
putpixel(x,pos,ypos,surface);


}

This method considers a circle like a bicycle wheel and draws a pixel at the end of each spoke. This is not the most efficient way to draw a circle using pixels (checkout the midpoint algorithm). But it will get you started.

• I approve this message. Start with something you understand (like what Ken suggests for circles, or y = Ax+B for straight line segments), and then learn the "real" algorithms (e.g. Bresenham) – ggambett Dec 13 '12 at 9:41

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: https://stackoverflow.com/questions/1201200/fast-algorithm-for-drawing-filled-circles

Read up on Bresenham's algorithms. First here for a line drawing algorithm, and once you understand how that works here for the actual circle algorithm.