C++ 矢量数学-确定对象是否朝着或远离某个点移动

C++ 矢量数学-确定对象是否朝着或远离某个点移动,c++,vector,vectormath,C++,Vector,Vectormath,我对向量数学不太在行,我最接近于这一点的是: sf::Vector2f dir = findObject->m_position - p_object->m_position; float d = p_object->m_velocity.x * dir.x + p_object->m_velocity.y * dir.y; if(d > 0) { // moving towards } 其中p_对象是朝另一个对象findObject移动的对象 但这可

我对向量数学不太在行,我最接近于这一点的是:

sf::Vector2f dir = findObject->m_position - p_object->m_position;
float d = p_object->m_velocity.x * dir.x + p_object->m_velocity.y * dir.y;
if(d > 0) {
      // moving towards
}
其中p_对象是朝另一个对象findObject移动的对象

但这可能是不对的。

使用点积

bool isMovingTowards(vec2 testPoint, vec2 objectPosition, vec2 objectVelocty) {
    vec2 toPoint = testPoint - objectPosition; //a vector going from your obect to the point
    return dot(toPoint, objectVelocity) > 0;
}

我不确定您是否知道点积,但您的代码本质上是在执行数学运算。Ie,您的代码几乎是正确的,可能只是稍微清晰一点。

您的代码没有意义:您没有使用dir,但在初始化之前使用了d。哎呀,复制错了,对不起。fixedIt看起来像是说,如果速度向量与两个对象之间的向量的点积大于零,那么通常是朝着它移动。这是正确的,如果向量之间的角度大于零,则点积为正。然而,我认为dir的符号是错误的,把减法倒过来。