c++ - vector 数学 - 查找对象是否朝向或远离某个点移动

标签 c++ vector vectormath

我不太擅长 vector 数学,我最接近的是:

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_object是一个朝向另一个物体移动的物体,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;
}

我不确定您是否了解点积,但您的代码本质上是执行数学运算来做到这一点。也就是说,您的代码几乎是正确的,它可能会更清晰一点。

关于c++ - vector 数学 - 查找对象是否朝向或远离某个点移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162335/

相关文章:

c++ - 用于区分和修补字符串的 Linux C 或 C++ 库?

c++ - 当找不到映射键时,我可以做出以下假设吗?

c++ - 在双向链表中使用指针交换节点

c++ - 迭代算法前的高效内存分配

c++ - 如何push_back到子 vector ?

algorithm - 了解速度并实现 Boids 算法?

c++ - C++程序优化

c++ - 删除结构 c++ vector 中的重复项

dart - Dart中的Vector3 subVector错误

c# - 给定当前角度和目标位置计算目标角度?