该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define W 800
#define H 600
void drawCircle(SDL_Renderer* renderer, SDL_Color* color, int x0, int y0, int r)
{
int x, y;
int d;
x = 0;
y = r;
d = 1 - r;
SDL_SetRenderDrawColor(renderer, color->r, color->g, color->b, color->a);
while (x < y)
{
SDL_RenderDrawPoint(renderer, x + x0, y + y0);
SDL_RenderDrawPoint(renderer, x + x0, -y + y0);
SDL_RenderDrawPoint(renderer, -x + x0, y + y0);
SDL_RenderDrawPoint(renderer, -x + x0, -y + y0);
SDL_RenderDrawPoint(renderer, y + x0, x + y0);
SDL_RenderDrawPoint(renderer, y + x0, -x + y0);
SDL_RenderDrawPoint(renderer, -y + x0, x + y0);
SDL_RenderDrawPoint(renderer, -y + x0, -x + y0);
if (d > 0)
{
d += ((x - y) << 1) + 5;
y--;
}
else
{
d += (x << 1) + 3;
//d += 2;
}
x++;
}
}
int main(int argc, char* argv[])
{
SDL_Window* window = SDL_CreateWindow("SDL Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, W, H, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderClear(renderer);
SDL_Color color = {0, 0, 0, 255};
drawCircle(renderer, &color, 100, 100, 100);
drawCircle(renderer, &color, 200, 400, 50);
SDL_RenderPresent(renderer);
SDL_Event event;
bool flag = true;
while (flag)
{
while (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
{
flag = false;
}
}
}
return 0;
}
/*
中点八分画圆算法,
欢迎大家帮忙测试
/xyx
*/