转向行为、追求、如何预测线性向量(MATH)?
Steering Behaviors, Pursuit, How do I predict a linear vector(MATH)?
所以我研究了转向行为,并且我设法做了一些简单的寻找、逃离和到达 S.B。但是我对 Pursuit S.B.
有一些疑问
我读过这篇文章是为了计算我的 TargetAgent 未来的一个点
我应该这样计算。
SVector nVector = v.pos + (vMagnitude * Velocity * time); //This get a point in advance from the agent
我已经从追求中制作了一个非常原始的代码:
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。)
与 Arrive 相比,Pursuit 的挑战在于您不知道目的地,甚至可能随着目标改变速度而改变。
中间形式是拦截 SB,您假设目标具有固定的速度和航向。这意味着你知道所有未来的位置,你可以选择一个点并为它制定路线。确切的 SB 将取决于初始位置、您的最大加速度、您的最大速度、转弯速率,以及可能需要匹配速度。
使用 Pursuit,您甚至需要考虑目标速度的可能变化,这意味着您需要考虑目标的最大加速度、速度和转弯速率。
这就是为什么您需要所有这些向量。
没有适用于所有情况(包括您的情况)的单一解决方案。您可能需要复习一下线性代数。
所以我研究了转向行为,并且我设法做了一些简单的寻找、逃离和到达 S.B。但是我对 Pursuit S.B.
有一些疑问我读过这篇文章是为了计算我的 TargetAgent 未来的一个点 我应该这样计算。
SVector nVector = v.pos + (vMagnitude * Velocity * time); //This get a point in advance from the agent
我已经从追求中制作了一个非常原始的代码:
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。)
与 Arrive 相比,Pursuit 的挑战在于您不知道目的地,甚至可能随着目标改变速度而改变。
中间形式是拦截 SB,您假设目标具有固定的速度和航向。这意味着你知道所有未来的位置,你可以选择一个点并为它制定路线。确切的 SB 将取决于初始位置、您的最大加速度、您的最大速度、转弯速率,以及可能需要匹配速度。
使用 Pursuit,您甚至需要考虑目标速度的可能变化,这意味着您需要考虑目标的最大加速度、速度和转弯速率。
这就是为什么您需要所有这些向量。
没有适用于所有情况(包括您的情况)的单一解决方案。您可能需要复习一下线性代数。