Project1
标题:
抛物线轨迹函数
[打印本页]
作者:
后知后觉
时间:
2012-4-11 15:21
标题:
抛物线轨迹函数
本帖最后由 后知后觉 于 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
复制代码
作者:
end55rpg
时间:
2012-4-11 21:55
请问你图是否用的bitmap里的描绘?
作者:
后知后觉
时间:
2012-4-12 01:21
end55rpg 发表于 2012-4-11 21:55
请问你图是否用的bitmap里的描绘?
Bitmap 的 set_pixel
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1