2011-06-23 15 views
1

私はグラフィック要素を持っています。初期状態をつけましょう。2つの状態間のスムーズな遷移(動的に生成)

状態の定義:画像の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

中間点がソースからデスティネーションまで直線上にあり、各点がそれ自身の独立した遷移である場合、途中で画像が歪むことがあります。私はこれを断念しましたが、私は最後にもっと簡単な方法でそれを行いました。とにかく、私はあなたの答えを受け入れ、あなたの時間をありがとう。 –

関連する問題