| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2012-5-5 |
| 在线时间 | 1 小时 |
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 1 小时
- 注册时间
- 2007-2-26
- 回帖
- 35
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
这是上次水水给出的填充一个三角形的答案:
- def draw_triangle(x1,y1,x2,y2,x3,y3,color=Color.new(0,0,0,255))
- triangle=Sprite.new
- triangle.bitmap=Bitmap.new(640,480)
- x=0
- if x2 != x1
- k1=(y2-y1)*1.0/(x2-x1)
- end
- if x3 != x1
- k2=(y3-y1)*1.0/(x3-x1)
- end
- if x3 != x2
- k3=(y3-y2)*1.0/(x3-x2)
- end
- height=1
- if x1 != x2
- for x in x1..x2
- y = (x-x1)*k1+y1 #求出点
- height = (x-x1)*k2+y1-y
- if height < 0
- y+=height
- height = 0 - height
- end
- triangle.bitmap.fill_rect(x, y, 1, height, color)
- end
- end
- if x2 != x3
- for x in x2..x3
- y = (x-x2)*k3+y2
- height = (x-x1)*k2+y1-y
- if height < 0
- y+=height
- height = 0 - height
- end
- triangle.bitmap.fill_rect(x, y, 1, height, color)
- end
- end
- end
复制代码
大概的原理就是一条线一条线的扫描……
但是上个礼拜得到答案后发现我并不需要如此大的自由空间……
现在的要求是:
def draw_rt_triangle(bitmap,x1,y1,x2,y2,color)
x3 = x1
y3 = y2
换句话说就是要牺牲原来的描绘的自由性而全部改为直角三角形,以此来提高效率
不知道各位听懂了没有……{/gg}
P.S.我是IamI,与上次一样,就不要出来什么set_point或者是Math::sin了 版务信息:本贴由楼主自主结贴~ |
|