| 
 
| 赞 | 0 |  
| VIP | 0 |  
| 好人卡 | 4 |  
| 积分 | 1 |  
| 经验 | 1935 |  
| 最后登录 | 2017-8-28 |  
| 在线时间 | 40 小时 |  
 Lv1.梦旅人 
	梦石0 星屑50 在线时间40 小时注册时间2011-5-3帖子28 | 
5楼
 
 
 楼主|
发表于 2011-11-23 18:11:09
|
只看该作者 
| 本帖最后由 恋百里 于 2011-11-23 23:43 编辑 
 画圆想出了一个。。但是填充圆想了半天
 
 
 恋百里于2011-11-23 23:42补充以下内容:
 v..解决了。。在网上找了个c语言版本的自己移植过来了。。效率baidu说是目前最快的方法了- -贴出来分享下。其实我只是移植。具体怎么算我还是半懂非懂嘛。。毕竟现在提倡解放劳动力嘛。计算机图形学不是我的研究范围,所以就补研究了主要是功能实现了(各位同样的新手勿学我)
 复制代码class Draw_circle
    def initialize(xc,yc,r,fill,color)
      #xc,yc为圆心
      #fill为是否填充
      #c为颜色值
      @sprite=Sprite.new
      @sprite.bitmap=Bitmap.new(640,480)
      x=0
      y=r
      yi=0
      d=3-2*r
      if(fill)
        #如果填充(画实心圆)
        while(x<=y)
          yi=x
          for yi in yi..y
            draw_circle_8(xc,yc,x,yi,color)
          end
          if(d<0)
            d=d+4*x+6
          else
            d=d+4*(x-y) # 有问题
            y-=1
          end
          x+=1
        end
      else
        #如果不填充(空心圆)
        while (x<=y)
          draw_circle_8(xc,yc,x,y,color)
          if (d<0)
            d=d+4*x+6
          else
            d=d+4*(x-y)
            y-=1
          end
          x+=1
        end
      end
    end
    def draw_circle_8(xc,yc,x,y,color)
      @sprite.bitmap.set_pixel(xc+x, yc+y, color)
      @sprite.bitmap.set_pixel(xc-x, yc+y, color)
      @sprite.bitmap.set_pixel(xc+x, yc-y, color)
      @sprite.bitmap.set_pixel(xc-x, yc-y, color)
      @sprite.bitmap.set_pixel(xc+y, yc+x, color)
      @sprite.bitmap.set_pixel(xc-y, yc+x, color)
      @sprite.bitmap.set_pixel(xc+y, yc-x, color)
      @sprite.bitmap.set_pixel(xc-y, yc-x, color)
    end
  end
  Draw_circle.new(50,50,20,false,Color.new(123,123,123,255))
   Draw_circle.new(100,100,50,true,Color.new(123,123,123,255))
  loop do
  Graphics.update
end
 | 
 |