3d轨迹路径计算

use*_*727 -3 c 3d

我正在开发一个足球游戏,用户必须选择速度,角度,方位角,以便用户可以使用所需的选择发布目标.任何人都可以告诉我如何为游戏创建一个轨迹路径.请帮助我,因为我无法找到解决方案.

pad*_*ddy 5

这是基础物理学.假设Z为up,则您的初始X和Y速度是恒定的,并由初始角度(使用trig)确定.Z分量完全由重力决定.您获取仰角并(再次使用trig)将其转换为组件.那是你的初始Z速度.

这是最简单的配方,忽略风,旋转和阻力(球在飞行期间不会横向移动并且仅受重力影响).

vx = power * cos(elevation) * sin(azimuth);
vy = power * cos(elevation) * cos(azimuth);
vz = power * sin(elevation);
Run Code Online (Sandbox Code Playgroud)

现在,时间位置t是简单的牛顿物理学:

x = vx * t;
y = vy * t;
z = vz * t - 0.5 * g * t * t;
Run Code Online (Sandbox Code Playgroud)

g重力在哪里(9.81 m/s/s)

但直接使用这些公式并不能让你计算弹跳等.为此,你需要逐步计算它.这意味着,对于小时间增量(dt),您可以获取当前位置和速度并进行修改.

vx;             // unchanged
vy;             // unchanged
vz -= g * dt;   // gravity
x += vx * dt;
y += vy * dt;
z += vz * dt;
Run Code Online (Sandbox Code Playgroud)

如果您的Z位置低于地面,则否定vz允许反弹.如果碰到曲面,则会执行类似的反射(将矢量反射到曲面法线上).

如果你想要飞行受到旋转(马格努斯效应)和其他力量的影响,事情会更棘手.您可能还想减弱反射,因为每当球反弹时能量就会消失.

随你(由你决定.我已经给出了基础知识,我希望有所帮助.

你应该阅读射弹动作.一旦你得到一些基本的工作,并希望使运动更加真实,请阅读运动球的空气动力学/流体动力学......几乎任何Rabindra Mehta的书或文章都是一个很好的起点.