2

私はJavaの初心者です。

Bezier Quadratic (アニメーション全体のパーセンテージを示しています) に基づいて 2D でグラフィック要素の位置座標を生成するコード (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 つの二次ベジエ曲線) がある場合、最終的な曲線は 2 つのベジエ曲線が結合されて記述され、updatePosition はすべてのポイントから新しい位置を再計算します)

4

0 に答える 0