目前我正在使用 Bresenham 的圆形绘制算法,该算法可以很好地绘制圆形,但是我想要一种相对快速且有效的方法来绘制具有指定厚度的圆形(因为 Bresenham 的方法仅绘制单个像素厚度)。我意识到我可以简单地绘制多个具有不同半径的圆,但我相信这会非常低效(效率很重要,因为这将在 Arduino 上运行,其中每一微秒都很宝贵)。我目前正在使用以下代码:
void circle(byte xc, byte yc, int radius, Colour colour) {
int x = -radius, y = 0, err = 2 - 2 * radius;
while(x < 0) {
setPixel(xc - x, yc + y, colour);
setPixel(xc - y, yc - x, colour);
setPixel(xc + x, yc - y, colour);
setPixel(xc + y, yc + x, colour);
radius = err;
if(radius <= y) {
err += ++y * 2 + 1;
}
if(radius > …Run Code Online (Sandbox Code Playgroud)