Крива Безьє
Знаєте, напрямні точки кривої Безьє лежать десь зовні, часом хочеться зрозуміти, а як провести криву через задані точки. Осьо порахувала на пальцях, здається, так. Тут точки з індексами 1 і 2 відповідають значенню параметра кривої 1/3 і 2/3 відповідно.
Тиць-тиць: PS
Але я ледача, щоб спростити вираз. Насправді
let p1 = (-10 * x0 / 81 + 4 * x1 / 9 - 2 * x2 / 9 + 4 * x3 / 81) / (4/27);
let q1 = (-10 * y0 / 81 + 4 * y1 / 9 - 2 * y2 / 9 + 4 * y3 / 81) / (4/27);
let p2 = (-10 * x3 / 81 + 4 * x2 / 9 - 2 * x1 / 9 + 4 * x0 / 81) / (4/27);
let q2 = (-10 * y3 / 81 + 4 * y2 / 9 - 2 * y1 / 9 + 4 * y0 / 81) / (4/27);
ctx.beginPath();
ctx.moveTo(x0,y0);
ctx.bezierCurveTo(p1,q1, p2,q2, x3,y3);
ctx.stroke(); // крива, описана...
ctx.beginPath();
ctx.moveTo(x0,y0);
ctx.lineTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.lineTo(x3,y3);
ctx.stroke(); // ...навколо ламаної
Тиць-тиць: PS
Але я ледача, щоб спростити вираз. Насправді
let p1 = -5 * x0 / 6 + 3 * x1 - 3 * x2 / 2 + x3 / 3;...
Коментарі
Дописати коментар