赞 | 5 |
VIP | 620 |
好人卡 | 38 |
积分 | 69 |
经验 | 125468 |
最后登录 | 2015-7-27 |
在线时间 | 1666 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6865
- 在线时间
- 1666 小时
- 注册时间
- 2008-10-29
- 帖子
- 6710
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 后知后觉 于 2012-4-11 15:33 编辑
也不知道 Ruby 的 Math 有没有这东西.自己做了一个...
这个东西可以用来计算某些东西的移动轨迹.
比如某人投掷了一枚手榴弹.
然后那手榴弹在天空中划出一条漂亮的抛物线.
至于要怎么具体应用到实处.那就是使用者自己的事了.
在线测试地址:
http://x.66rpg.com/game.php?id=52
按一下键盘的 A 键后方向键可移动 A 点
按一下键盘的 S 键后方向键可移动 B 点
按一下键盘的 D 键后方向键可移动 C 点
默认是移动 C 点
调用方法:
HzhjMath.parabola(x1, y1, x2, y2, x3, y3, x = nil)
若给定 x 函数则返回 y
若省略 x 函数则返回 a,b,c
HzhjMath.parabola_y(x, a, b, c)
求得 y 值
使用时要注意要确保 x1≠x2≠x3
代码如下:
- #==============================================================================
- # ■ 抛物线函数 by 后知后觉([email protected])2012-4-11
- #==============================================================================
- module HzhjMath
- def self.parabola(x1, y1, x2, y2, x3, y3, x = nil)
- x1 = x1.to_f; y1 = y1.to_f
- x2 = x2.to_f; y2 = y2.to_f
- x3 = x3.to_f; y3 = y3.to_f
- x1p = x1 * x1
- x2p = x2 * x2
- x3p = x3 * x3
- a = ((y1-y2)*(x1-x3)-(y1-y3)*(x1-x2)) / ((x1p-x2p)*(x1-x3)-(x1p-x3p)*(x1-x2))
- b = ((y1-y2) - (x1p-x2p)*a) / (x1-x2)
- c = y1 - a * x1p - b * x1
- return a,b,c unless x
- return parabola_y(x, a, b, c)
- end
- def self.parabola_y(x, a, b, c)
- y = a * x * x + b * x + c
- return y.round
- end
- end
复制代码 |
|