Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 转向行为、追求、如何预测线性向量(数学)?_C++_Artificial Intelligence - Fatal编程技术网

C++ 转向行为、追求、如何预测线性向量(数学)?

C++ 转向行为、追求、如何预测线性向量(数学)?,c++,artificial-intelligence,C++,Artificial Intelligence,因此,我正在研究驾驶行为,我成功地做了一些简单的寻找、逃离和到达S.B.然而,我对追求S.B.有一些疑问 我读到这篇文章是为了计算我的目标代理未来的一个点 我应该这样计算 SVector nVector = v.pos + (vMagnitude * Velocity * time); //This get a point in advance from the agent 我在pursuit中编写了一个非常原始的代码: SVector CBoid::Pursuit(const SVector

因此,我正在研究驾驶行为,我成功地做了一些简单的寻找、逃离和到达S.B.然而,我对追求S.B.有一些疑问

我读到这篇文章是为了计算我的目标代理未来的一个点 我应该这样计算

SVector nVector = v.pos + (vMagnitude * Velocity * time); //This get a point in advance from the agent
我在pursuit中编写了一个非常原始的代码:

SVector CBoid::Pursuit(const SVector& vTarget)
{
//get the vector from this Agent to Target Agent.
SVector nVector = position - vTarget; 

//Acquire the lenght of vector between this and Target.
double vMagnitude = nVector.Magnitude();

//locate the new point and set my current vector to that point.
nVector = vTarget.position + (vTarget.Magnitude() * vTarget.Velocity * vTarget.time);

//if this  Magnitude is less than  target radius, start slowing down. //this part is just an idea.
if (vMagnitude > AGENTS_RADIUS && vMagnitude < 0.01)
{
    double slowDownScalar = vMagnitude / AGENTS_RADIUS;
    nVector * slowDownScalar;
    return Seek(nVector);
}

else
    return Seek(nVector);
}

*这是一个原始函数

我不明白的是为什么我需要这些变量。我读过很多关于向量的书,但没有读过关于这种预测方法的书。
有人能给我解释一下为什么或者如何预测向量的未来位置吗?我主要想了解,这样我就可以做我自己的S.B.

与到达相比,追求的挑战是你不知道目的地,甚至可能随着目标速度的变化而变化

中间形式是拦截SB,假设目标有固定的速度和航向。这意味着你知道所有未来的位置,你可以选择一个点并规划一条通向它的路线。准确的SB将取决于初始位置、最大加速度、最大速度、转弯率,以及可能的匹配速度需求

在追踪中,您甚至需要考虑目标速度的可能变化,这意味着您需要考虑目标的最大加速度、速度和转弯率

这就是为什么你需要这些向量


没有一个单一的解决方案适用于所有情况,包括您的情况。你可能需要温习一下线性代数。

我终于明白了如何在将来得到分数。我总是理解穹窿,但我总是感到困惑,因为我缺乏一个物理表征。我在youtube上得到了很大的帮助:游戏开发者数学谢谢。。我将重温线性代数: