2011-06-23 97 views
1

我有一個圖形元素。我們給出一個初始狀態。兩種狀態之間的平滑過渡(動態生成)

定義狀態:屏幕上的位置以及由圖像3個角的座標(左上角,右上角和左下角)給出的自定義變換(比例尺+旋轉+傾斜度)。

然後在一段時間後,該應用程序接收一些輸入提供一個新的狀態。此時我需要圖形元素開始向新狀態轉換,做一個自然轉換(不要在元素的比例中出現大的失真)。

Transition example

此外,如果一個新的狀態,之前收到的過渡結束後,它被放棄,新的過渡,從那裏開始保持。

任何建議我怎麼做到這一點?

回答

1

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並開始轉換再次。

希望有幫助!

+0

看起來並不那麼簡單。如果我這樣做,在轉換過程中圖像會變得非常糟糕。 –

+0

仔細檢查您的代碼,並確保每個初始點對應於正確的中間點和最終點。如果您發佈代碼,我們會更好地提供幫助。 –

+0

我的意思是,如果中間點在從源到目標的直線上,並且每個點都是自己的獨立過渡,則圖像可能會沿途變形。儘管如此,我放棄了這一點,最終我以一種更簡單的方式做到了這一點。無論如何,我接受了你的答案,並感謝你的時間。 –