В общем есть градиент перемещения объекта (окружность с радиусом + направление движения). Нужно понять когда объект собирается покинуть экран и когда он в него вошел (ну и соответственно с какого края экрана (лево-право, верх-низ)).
В какую сторону копать? Нейросети? Метод опорных векторов? или еще чего. В общем буду благодарен за любую информацию по сабжу. На сам алгоритм, конечно, не рассчитываю
Я бы обратился к школьной формуле S = v * t, поскольку никаких др данных Вы не упомянули. Вот набросок
C++ (Qt)
enum {
side_left = 0,
side_top = 1,
side_right = 2,
side_bоttom = 3
};
int GetIntersTime( const QPointF & pos, const QVector2D & velocity, // точка и скорость
const QRect & bounds, // экран
float * timeInters ) // время до пересечения
{
// время пересечений
qreal timeI[4];
timeI[side_left] = (bounds.left() - pos.x()) / CheckZero(velocity.x());
timeI[side_top] = (bounds.top() - pos.y()) / CheckZero(velocity.y());
timeI[side_right] = (bounds.right() - pos.x()) / CheckZero(velocity.x());
timeI[side_bottom] = (bounds.bottom() - pos.y()) / CheckZero(velocity.y());
// выбираем наименьшее положительное время
int minT = 0;
*timeInters = -1.0;
for (int i = 0; i < 4; ++i) {
if (timeI[i] < 0.0) continue;
if (*timeInters < 0.0 || *timeInters > timeI[i]) {
*timeInters = timeI[i];
minT = i;
}
}
// возвращаем индекс стороны пересечения
return minT;
}