我是java新手,
我正在使用代码(来自andengine),它根据贝塞尔二次曲线(我给出整个动画的百分比)生成二维图形元素的位置坐标。mX1、mX2、mX3(在构造函数中初始化)是描述该曲线控制点的点。
public void updatePosition(final float pPercentageDone, final IEntity pEntity) {
final float u = 1 - pPercentageDone;
final float tt = pPercentageDone*pPercentageDone;
final float uu = u*u;
final float ut2 = 2 * u * pPercentageDone;
/* Formula:
* ((1-t)^2 * p1) + (2*(t)*(1-t) * p2) + ((t^2) * p3) */
final float x = (uu * this.mX1) + (ut2 * this.mX2) + (tt * this.mX3);
final float y = (uu * this.mY1) + (ut2 * this.mY2) + (tt * this.mY3);
pEntity.setPosition(x, y);
}
我想要实现的是将贝塞尔曲线的生成从 3 点扩展到 n 点 (n>4) 我怎样才能最有效地做到这一点?
这应该像这样工作:
//constructor
public Modifier (ArrayList<PointF> pInputPoints,....)
当 Arraylist 中有 8 个点(= 2 个二次贝塞尔曲线)时,最终曲线由合并在一起的两条贝塞尔曲线描述,然后 updatePosition 将从所有点重新计算新位置)