Math 轨迹-数学,c#

Math 轨迹-数学,c#,math,physics,Math,Physics,我试图绘制两点之间的轨迹。我所知道的只是这两点以及它们之间的距离。我想计算的是到达终点所需的速度和角度 我还希望能够考虑一些重力和风,这样路径/轨迹就不那么“完美”了。这是一个电脑游戏 谢谢你,这个角度很容易,在2(pB.x-pA.x,pB.y-pA.y)范围内。速度矢量应为(pB pA)*速度。要添加重力/风(重力只是带有负y分量的风),请在每个模拟滴答声处将(缩放的)风矢量添加到速度中(基本上是将其添加为加速度)。只是一个链接,抱歉: gamedev有很多关于游戏物理的论文。看一看 (顺便说

我试图绘制两点之间的轨迹。我所知道的只是这两点以及它们之间的距离。我想计算的是到达终点所需的速度和角度

我还希望能够考虑一些重力和风,这样路径/轨迹就不那么“完美”了。这是一个电脑游戏

谢谢你,这个角度很容易,在2(pB.x-pA.x,pB.y-pA.y)范围内。速度矢量应为(pB pA)*速度。要添加重力/风(重力只是带有负y分量的风),请在每个模拟滴答声处将(缩放的)风矢量添加到速度中(基本上是将其添加为加速度)。

只是一个链接,抱歉:

gamedev有很多关于游戏物理的论文。看一看

(顺便说一句:风只会给物体增加一些速度。最难的部分是重力。)

这本书:

现代外弹道:对称射弹的发射和飞行动力学ISBN-13:978-0764307201

是现代弹道学的权威。为确保准确性,您需要更正:

如果你需要一些免费的、不那么权威的东西,曼恩博士1909年的经典著作《子弹从火药飞到目标》可以在books.google.com上找到

-卡马斯


PS游戏中糟糕的弹道是我特别讨厌的,尤其是“从平面射向无限远”的弹道模型。

由于加速度在任何时候都是恒定的,所以可以使用来描述整个物理情况

以下解释假定理解基本代数和向量数学。如果你对它不熟悉,我强烈建议你在尝试写你所提议的那种游戏之前先仔细阅读一下。它还假设你处理的是2D,但如果你处理的是3D,大部分都是一样的,因为它都是矢量形式的-你只需要解一个三次方而不是二次方,因此最好使用数值解算器


物理 (注:矢量以粗体表示。)

基本上,您需要从建立位移方程(矢量形式)开始:

r=ut+(at^2)/2

r是相对于起始位置的位移,u是初始速度,a是加速度(始终不变)。当然是时间

a取决于系统中存在的力。在重力和风的一般情况下:

a=F\w/m-gj

其中,
i
是x方向上的单位向量,
j
是y方向上的单位向量
g
是重力引起的加速度(地球上为9.81 ms^-2)
F_w
是由风引起的力矢量(该项在无风时消失)-为了简单起见,我们假设该项为常数
m
是弹丸的质量

然后,您可以简单地将
的方程替换为
r
的方程,剩下三个变量的方程(
r
t
)。接下来,将
r
的单矢量方程展开为两个标量方程(用于x和y位移),并使用替换来消除
t
(这里的数学可能有点棘手)。您应该只剩下一个二次方程,其中只有
r
u
作为自由变量

现在,您需要求解
r=[target position]-[start position]
的方程。如果您为初始速度
u
(即速度)选择了某个量级,那么您可以将u的x和y分量分别写成
u cos(a)
u sin(a)
,其中
u
是初始速度,a是初始角度。这可以重新安排,通过一点三角测量,你最终可以解出角度a,给你发射速度


算法 上面的大部分描述应该首先在纸上完成。然后,只需编写一个函数来解决问题,并应用一些反三角函数来得到结果



顺便说一句,这篇文章中的所有数学/物理都很抱歉,但这是不可避免的!OP似乎更多地询问了物理方面的问题,而不是计算方面的问题,所以这就是我所提供的。希望这对OP和其他人仍然有用。

正如人们所提到的,虽然计算点之间的角度相对容易,但确定风和重力影响拍摄的方式则更为困难

风和重力都是加速力,尽管它们的作用有些不同

重力更容易,因为它具有恒定的方向(向下)和大小,而与对象无关。(假设你没有以可笑的高速度拍摄东西)。要计算重力如何影响对象的速度,只需计算上次更新对象速度后的时间,将其乘以重力因子,然后将其添加到当前速度向量

作为一个简单的例子,让我们考虑一个在x,y,z方向以(3,4,7)的速度移动的物体,z与重力平行。你决定你的重力值是-。你准备好计算新的速度了。当您检查时,您发现自上次计算以来已经过去了10个时间单位(无论您的时间单位是什么……可能是滴答声或其他)。你用你的时间单位(10)乘以重力(-.3),得到-3。把它加到Z上,新的速度是(3,4,4)。就这样。(这已经非常简化了,但这应该是通用电气的