Итак, я пытаюсь создать функцию, которая заставит объект двигаться в изогнутом движении. Предполагается, что эта функция используется повторно и должна иметь возможность принимать разные числа в качестве аргументов. Числа будут служить контрольными точками, определяющими направление кривой. Я сталкиваюсь с двумя проблемами:
При попытке использовать аргументы point0x
и point0y
вместо переменных в уравнениях, выводимые значения xt
сильно отличаются от того, когда я использую переменные. Между тем, вывод для yt
вырастет до NaN
. Однако всякий раз, когда я вставляю p0.x
и p0.y
на их место, все происходит так, как ожидалось.
Я хочу использовать cancelRequestAnimationFrame();
, чтобы остановить рекурсию анимации. Я получаю сообщение об ошибке:
cancelRequestAnimationFrame не определено.
Нужно ли отменять в совершенно другой функции? Следует ли мне избегать его использования в операторе if
?
function parameter_test(point0x, point0y) {
var p0 = {x:0, y:700};
var p1 = {x:20, y:100};
var p2 = {x:200, y:100};
var p3 = {x:200, y:0};
var cx = 3 * (p1.x - point0x);
var bx = 3 * (p2.x - p1.x) - cx;
var ax = p3.x - point0x - cx - bx;
var cy = 3 * (p1.y - point0y);
var by = 3 * (p2.y - p1.y) - cy;
var ay = p3.y - point0y - cy - by;
var xt = ax * Math.pow(t, 3) + bx * Math.pow(t, 2) + cx * t + point0x;
var yt = ay * Math.pow(t, 3) + by * Math.pow(t, 2) + cy * t + point0y;
t += speed;
if (t > 1) {
t = 1;
cancelRequestAnimationFrame(parameter_test);
}
requestAnimationFrame(parameter_test);
console.log(xt, yt);
}
parameter_test(0, 700);