如何获得正确的Vector3? (C ++)

时间:2018-05-30 20:33:50

标签: math vector move linear algebra

我想在地图上移动一个对象,但我不知道如何为它获取Vector3。

example:

object A coordinates:
coordsA = Vector3();
coordsA.x = 100.0f;
coordsA.y = -500.0f;
coordsA.z = 50.0f;

object B coordinates:
coordsB = Vector3();
coordsB.x = -400.0f;
coordsB.y = 200.0f;
coordsB.z = 40.0f;

我可以选择设置力来移动对象。 setForce(Vector3 coordsC);

如何获取Vector3?

是否要对位于给定坐标的对象A施加力以将其移向指定坐标处的对象B?

- > "是"

在对象A到达对象B或有限时间之前是否会施加力?

- > "是的,我想要应用直到对象A到达!"

您希望对象A多快到达对象B的位置?

- >"如果我可以改变对象到达位置的速度,那就很好了!"

1 个答案:

答案 0 :(得分:0)

有很多不同的方法可以做到这一点。这是一个:

我们假设物体保持静止并且没有额外的力(如摩擦力或重力)。我们希望运动花费时间t并将路径分成两部分:前半部分将是恒定加速度。第二条路径将是持续减速。

路径方向为d = B - A。因此必要的加速度(3D矢量):

a = 4 / t^2 * d
路径的前半部分为

,下半部分为负。这可以从运动学运动方程得出:

s(t, v0, s0) = 1/2 * a * t^2 + v0 * t + s0,

我们设置

1/2 * (A + B) = s(1/2 * t, 0, A).

要计算所需的力,我们需要物体的质量m。然后:

F = m * a

是你需要申请的力量。