赞 | 1 |
VIP | 246 |
好人卡 | 87 |
积分 | 1 |
经验 | 34142 |
最后登录 | 2015-1-15 |
在线时间 | 323 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 323 小时
- 注册时间
- 2010-8-21
- 帖子
- 666
|
[凑热闹]
抛物线是二次函数...需指定3个坐标,始末只有2个...所以还要指定一个,
送上1个BUG版的,当目标x坐标比目前x坐标小时,不移动...
3个坐标,再利用牛顿插值法对二次函数求解....ls的各位...面向对象,春暖花开....- #==============================================================================
- # ■ Math.quadratic
- #------------------------------------------------------------------------------
- # 数学模块 2次函数
- #==============================================================================
- def Math.quadratic(x1,x2,x3,y1,y2,y3, &block)
- # 牛顿插值公式
- (x1..x3).each {|x|
- y=(y3*(x-x1)*(x-x2))/((x3-x1)*(x3-x2)+(y2*(x-x1)*(x-x3))/((x2-x1)*(x2-x3)+(y1*(x-x2)*(x-x3))/((x1-x2)*(x1-x3))))
- block.call(x,y)
- }
- end
- #==============================================================================
- # ■ Sprite
- #------------------------------------------------------------------------------
- # 精灵类 管理图形对象
- #==============================================================================
- class Sprite
- #--------------------------------------------------------------------------
- # ● 平抛移动
- #--------------------------------------------------------------------------
- def move_to_2(x, y, ox, oy)
- Math.quadratic(self.x,ox,x,self.y,oy,y){|x0|tm=x0.dup
- self.x, self.y =tm
- Graphics.update}
- end
- end
- temp = Sprite.new
- temp.bitmap = Bitmap.new(20,20)
- temp.bitmap.fill_rect(0,0,20,20,Color.new(255,0,0))
- temp.x = 52;temp.y = 20
- temp.move_to_2(640,480,20,20)
复制代码 |
|