Расчет кривой Безье на лету - PullRequest
2 голосов
/ 07 августа 2011

Я новичок в Java,

Я работаю с кодом (из andengine), который генерирует мне координаты положения графического элемента в 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);
}

Я хочу добиться того, чтобы расширить поколение Безье с 3 до n точек (n>).4) Как я могу сделать это наиболее эффективным способом?

Это должно работать следующим образом:

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

и когда в Arraylist есть 8 точек (= 2 квадратичные кривые Безье), тогда окончательная кривая описывается двумя кривыми Безье, объединенными вместе, а затемupdatePosition пересчитает новую позицию из всех точек)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...