【发布时间】:2012-06-07 15:35:25
【问题描述】:
2D游戏中的弹道追踪问题:
假设:
我们做了一个简化的假设,即重力是恒定的并且没有风或阻力。弹丸的运动由以下方程给出:
x = x0 + v0t cos(theta)
y = y0 + v0t sin(theta) + .5 g t^2
其中 (x0, y0) 是初始位置,v0 是初始速度(仅幅度),theta 是排放角,g 是重力加速度。求解 v0t 的第一个方程并代入第二个方程,我们得到方程 [1]:
y = y0 + (x-x0) tan(theta) + .5 (g/v0^2) (x-x0)^2 / cos(theta)^2
校准:
校准是根据实际弹丸确定 g 值的过程。为此,我们随机发射一个弹丸并捕获:
- 起点 (x0, y0)
- 目标向量 (v0, theta)
- 曲线上的一个随机点 (x1, y1)
将值代入方程 [1] 并求解 g,我们得到:
g = (v0^2) * {[2 cos(theta)^2 (y1-y0) / (x1-x0)^2] - [sin(2theta) / (x1-x0)]}
应用:
现在我们有了 g,我们可以将其代回方程 [1],现在可以使用该方程从任何起点和初始速度跟踪射弹的路径。 (这是我看不懂的部分)
g=5.89
(x0,y0) 起始位置 = 0,0
初始速度 = 1-100
放电角度 = 0-360
如果重力加速度为 5.89(在此游戏),起始位置是0,0?
我是一个数学新手,所有这些东西都不是我在别处找到的粗体字,我一直在绞尽脑汁。请假设我什么都不知道。
【问题讨论】:
-
我不确定我是否理解您的问题。在顶部,您给出了足以绘制弹丸路径的参数路径方程(其中 x 和 y 是时间的函数)。您是否正在寻找抛物线本身的方程,即 y 作为 x 的函数?
-
将所有常数代入方程 [1],得到一个简单的
y(x)二次函数。那么你的问题是什么? (当然你必须选择一个初始速度和一个放电角度,因为每个都会给你不同的路径) -
谢谢霍华德,你好像知道你在说什么,你能留下来帮助我理解你在说什么吗?我按照你说的做了,得到了一个单一的答案。我不明白 y 的单个答案如何绘制抛物线,给定一个初始速度和一个放电角?
-
在将所有内容放入 [1] 之后,还剩下
x变量(您没有指定x!),因此您有一个函数方程y(x) = A * x^2 + B * x + C和一些常量 @987654325 @、B和C。所以你可以直接绘制y(x),它会显示路径。 -
您所说的 x 变量是“起点”,对吧?
标签: math geometry computational-geometry trigonometry projective-geometry