/**贝塞尔曲线算法
*anchorpoints 4个点坐标
*pointsAmount 运行轨迹点的数量
*/
private CreateBezierPoints(anchorpoints:Vec2[], pointsAmount:number)
{
function MultiPointBezier(points:Vec2[], t:number) {
var len = points.length;
var x = 0, y = 0;
var erxiangshi = function (start:number, end:number) {
var cs = 1, bcs = 1;
while (end > 0) {
cs *= start;
bcs *= end;
start--;
end--;
}
return (cs / bcs);
};
for (var i = 0; i < len; i++) {
var point = points[i];
x += point.x * Math.pow((1 - t), (len - 1 - i)) * Math.pow(t, i) * (erxiangshi(len - 1, i));
y += point.y * Math.pow((1 - t), (len - 1 - i)) * Math.pow(t, i) * (erxiangshi(len - 1, i));
}
return { x: x, y: y };
}
var points = [];
for (var i = 0; i < pointsAmount; i++) {
var point = MultiPointBezier(anchorpoints, i / pointsAmount);
points.push(point);
}
return points;
}
这是JS贝塞尔曲线核心算法