векторная математика — определяет, движется ли объект к точке или от нее

Я не очень хорошо разбираюсь в векторной математике, самое близкое, к чему я пришел, это:

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

но это, вероятно, не правильно.

1

Решение

Используйте точечное произведение.

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;
}

Я не уверен, знаете ли вы о точечном продукте, но ваш код выполняет математические вычисления, чтобы это сделать. Т.е. код у вас почти правильный, может быть немного понятнее.

1

Другие решения


По вопросам рекламы [email protected]