即时计算Bezier曲线

时间:2011-08-07 13:21:51

标签: java math bezier andengine

我是java的新手,

我正在使用代码(来自andengine),它根据Bezier Quadratic(我给出整个动画的百分比)在2d中生成图形元素的位置坐标。 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);
}

我想要实现的是将Bezier的生成从3点扩展到n点(n> 4) 我怎么能以最有效的方式做到这一点?

这应该是这样的:

//constructor
public Modifier (ArrayList<PointF> pInputPoints,....) 

当在Arraylist中有8个点(= 2个二次贝塞尔曲线)时,最终曲线由两个合并在一起的贝塞尔曲线描述,然后updatePosition将从所有点重新计算新位置)

0 个答案:

没有答案