let begin;
const duration = 2000;
function animate(now) {
begin = begin || now;
const t = Math.min(1, (now - begin) / duration); // Время анимации [0, 1]
let x = lerp(10, 590, t)
let y = lerp(390, 100, t)
ctx.clearRect(40, 40, canvas.width, canvas.height - 70);
arrow({x: 40, y: canvas.height - 40}, {x, y}, 40);
if (t === 1) return;
requestAnimationFrame(animate)
}
function lerp(v0, v1, t) {
return v0 * (1 - t) + v1 * t;
}
const easing = BezierEasing(0, 0, 1, 0.5);
const eased = easing(t); // t - равномерное линейное время от 0 до 1
const x = lerp(ax, bx, eased); // ax, bx - начальная и конечная координата по оси x
const y = lerp(ay, by, eased); // ay, by - начальная и конечная координата по оси y
<script src="script.js"></script>
, не мучай phpшку
6. Категорически запрещается вводить пользователей Сервиса в заблуждение, в том числе:
....
6.5. Использовать другие аккаунты с целью обхода суточных ограничений, правил Сервиса и санкций за нарушение правил Сервиса;
https://toster.ru/help/rules