Можно сделать
цепочку преследования: к случайной точке тянется одна, к ней другая, и т.д., а последняя – муха.
Очередную точку ставить на плоскости случайно, в любом месте внутри допустимой области. Эта точка – цель, к которой стремится следующая, невидимая точка: каждый следующий кадр её координаты изменяются на
k * векторИзТекущегоПоложения-в-Цель
:
x = x + k * (xTarget - x);
y = y + k * (yTarget - y);
Так «преследователь» замедляется, по мере приближения к цели, никогда её не достигая.
Эта невидимая точка – не одна. К ней, как к цели, стремится следующая. К той ещё одна. Наконец, сама муха по этому закону стремится к хвосту этой цепи - очередной точке.
Чем больше звеньев в такой цепи, тем плавнее получается кривая. При приближении мухи к цели ближе, чем на D, генерится следующая случайная цель.
Сделал
рабочий пример.
Можно поменять алгоритм и сделать, скажем, линейную скорость постоянной. Или случайно варьировать параметры k и D – от этого поменяется скорость и траектория от плавной ближе к ломаной.