相关疑难解决方法(0)

圆与厚度绘制算法

目前我正在使用 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)

c algorithm geometry bresenham

6
推荐指数
1
解决办法
5756
查看次数

标签 统计

algorithm ×1

bresenham ×1

c ×1

geometry ×1