Плавный переход между двумя состояниями (динамически генерируемый) - PullRequest
1 голос
/ 23 июня 2011

У меня есть графический элемент.Давайте дадим начальное состояние.

Определение состояния : позиция на экране и пользовательское преобразование (масштаб + поворот + перекос), заданное координатами 3 углов изображения (верхнийслева, сверху справа и снизу слева).

И через мгновение приложение получает некоторый ввод, дающий новое состояние.В этот момент мне нужен графический элемент, чтобы начать переход к новому состоянию, делая естественный переход (чтобы не появилось большого искажения в пропорциях элемента).

Transition example

Кроме того, если новое состояние получено до того, как переход завершен, он отменяется, и новый переход начинается с того места, где он оставался.

Есть предложения, как этого добиться?

1 Ответ

0 голосов
/ 25 июня 2011

iuliux,

Классическая реализация для анимации перехода в N шагов выглядит следующим образом:

for (i = 0;  i <= N;  ++i) {
  for (p = 0;  p < nPoints;  ++p) {
    pointsToDraw[p] = initialPoints[p] + (finalPoints[p] - initialPoints[p]) * i / N
  }
  drawFigureAt(pointsToDraw);
}

На английском языке:

  1. Для каждой точки:представьте линию между ее начальной и конечной позициями.
  2. Рассчитайте точки вдоль линии, которые делят ее на N сегментов одинакового размера.
  3. Нарисуйте фигуру, используя первый набор точек, затем следующую, и т. Д.

Если фигура перемещается до того, как вы нарисовали конечное состояние, скопируйте ее текущую позицию в initialPoints и начните переход снова.

Надеюсь, это поможет!

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