小编ekc*_*ell的帖子

C ++函数,用于计算和采样3D空间中弹丸的轨迹。物理程序设计

我需要用C ++编写一个函数,该函数可以对在3D空间中移动的对象的轨迹曲线进行建模和采样。

问题陈述:

该函数将需要接受3个参数作为输入。函数原型可能看起来像这样:

void CalculateAndSampleTrajectory(Vec3 direction, float impulse, float mass)
{
  //...
}
Run Code Online (Sandbox Code Playgroud)

VEC3方向是一个结构。本质上是3个浮点,它们表现为描述脉冲初始角度的单位矢量。

浮冲动是冲动是多么强大的幅度。

浮动质量描述投影的物体的质量。

该函数将采用这3个参数,然后在给定瞬时脉冲的情况下,沿着此向量射击,预先计算该质量的对象的轨迹。

为此,它将在飞行的前4秒钟内对轨迹进行采样(例如200个)。这些样本将是弹丸位置的Vec3,并存储在阵列中。

所有单位均为SI,重力加速度为9.81。我们不会考虑任何空气阻力。

我已经学到的:

这个问题涉及很多物理学,特别是经典力学。这不是我的强项,但我对发生的事情有基本的了解。

我知道我将需要物体的速度,我认为可以将其计算为:

Vec3 velocity = (direction * impulse)/mass;
Run Code Online (Sandbox Code Playgroud)

我觉得这个作品,因为我的冲动将被立即应用,所以这将是F = MA重新安排找到一个但作为3D矢量的。老实说,我什至不确定这是否正确,但我认为是正确的。

一旦有了速度,我就知道可以使用在线上提供的大量方程式了,例如有关弹道Wikipedia文章

我不太擅长将这些方程式解释为C ++。

在设置了适当的方程式之后,我将需要在4秒钟内进行200个采样。这可以循环执行:

for(int i = 0; i < 200; i++)
{
    int t = 0;
    //sample equation with t
    //store resulting vec3 pos in array
    t = t + 0.02;
}
Run Code Online (Sandbox Code Playgroud)

我在t的 …

c++ 3d physics projectile

5
推荐指数
1
解决办法
4449
查看次数

标签 统计

3d ×1

c++ ×1

physics ×1

projectile ×1