赞 | 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
复制代码 |
|