ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SDL2高效画圆的算法(二)

SDL2高效画圆的算法(二) 文章目录一、实心圆二、实心半圆三、空心圆上一篇文章讲述了 SDL2高效画实心圆的算法一本篇继续探讨数学基础不变更新一下画法再探索一下画半实心圆和画空心圆。一、实心圆voidSDL_RenderFillCircle(SDL_Renderer*render,intx0,inty0,intradius,Uint8 r,Uint8 g,Uint8 b,Uint8 a){SDL_SetRenderDrawColor(render,r,g,b,a);intxradius;inty0;interr0;while(xy){SDL_RenderDrawLine(render,x0x,y0y,x0-x,y0y);SDL_RenderDrawLine(render,x0y,y0x,x0-y,y0x);SDL_RenderDrawLine(render,x0x,y0-y,x0-x,y0-y);SDL_RenderDrawLine(render,x0y,y0-x,x0-y,y0-x);y1;err(y1)1;if(err0){x-1;err-(x1)1;}}}结果如图二、实心半圆voidSDL_RenderFillHalfCircle(SDL_Renderer*render,intx0,inty0,intradius,Uint8 r,Uint8 g,Uint8 b,Uint8 a){SDL_SetRenderDrawColor(render,r,g,b,a);intxradius;inty0;interr0;while(xy){SDL_RenderDrawLine(render,x0x,y0y,x0x,y0-y);SDL_RenderDrawLine(render,x0y,y0x,x0y,y0-x);SDL_RenderDrawLine(render,x0x,y0-y,x0x,y0y);SDL_RenderDrawLine(render,x0y,y0-x,x0y,y0x);y1;err(y1)1;if(err0){x-1;err-(x1)1;}}}结果如图三、空心圆voidSDL_RenderDrawCircle(SDL_Renderer*render,intx0,inty0,intradius,Uint8 r,Uint8 g,Uint8 b,Uint8 a){SDL_SetRenderDrawColor(render,r,g,b,a);intxradius;inty0;interr0;while(xy){SDL_RenderDrawLine(render,x0x,y0y,x0x,y0(y1));SDL_RenderDrawLine(render,x0x,y0-y,x0x,y0-(y1));SDL_RenderDrawLine(render,x0y,y0x,x0(y1),y0x);SDL_RenderDrawLine(render,x0y,y0-x,x0(y1),y0-x);SDL_RenderDrawLine(render,x0-y,y0x,x0-(y1),y0x);SDL_RenderDrawLine(render,x0-x,y0y,x0-x,y0(y1));SDL_RenderDrawLine(render,x0-x,y0-y,x0-x,y0-(y1));SDL_RenderDrawLine(render,x0-y,y0-x,x0-(y1),y0-x);y1;err(y1)1;if(err0){x-1;err-(x1)1;}}}效果如图
返回列表