js 生成过控制点的曲线
相关参考:js 生成不过控制点的曲线-CSDN博客
generateCurvePoints(P0, P1, P2, 50); // 生成 50 个点function computeControlPoint(P0, P1, P2) {return [2 * P1[0] - 0.5 * P0[0] - 0.5 * P2[0],2 * P1[1] - 0.5 * P0[1] - 0.5 * P2[1]];
}function getQuadraticBezierPoint(t, P0, C, P2) {const oneMinusT = 1 - t;return [oneMinusT * oneMinusT * P0[0] + 2 * oneMinusT * t * C[0] + t * t * P2[0],oneMinusT * oneMinusT * P0[1] + 2 * oneMinusT * t * C[1] + t * t * P2[1]];
}function generateCurvePoints(P0, P1, P2, steps = 20) {const C = computeControlPoint(P0, P1, P2);const points = [];for (let i = 0; i <= steps; i++) {const t = i / steps;points.push(getQuadraticBezierPoint(t, P0, C, P2));}return points;
}