次の方法で共有


慣性力学

慣性は、オブジェクトの動きをアニメーション化するための計算を実行し、Windows Touch を組み込むアプリケーションで汎用的な使いやすさをサポートするために使用されます。 このセクションでは、慣性によって有効になっている次の機能を示します。

  • 慣性物理学の簡単な概要。
  • 速度と減速のプロパティを使用した滑らかなオブジェクト アニメーション。
  • ディスプレイスメント プロパティを使用したスムーズ オブジェクト アニメーション。
  • エラスティック 境界を使用して画面の端からバウンスする。

慣性物理学の概要

慣性プロセッサは、位置、減速値、初期速度を組み込んだ単純な物理モデルを使用します。 時間は、変位するオブジェクトの現在の位置を決定するために、モデルへの動的入力として使用されます。 次のグラフと数式は、オブジェクトの位置の計算に使用される物理モデルの概要を示しています。

オブジェクトの位置を計算するために使用されるグラフと数式を示す図

現在位置 (x) の計算に使用される数式では、初期速度 (v) に経過時間 (t) を掛け、減速係数 (d) 倍の時間を 2 乗して減らします。 これにより、物体の減速がスムーズになります。 曲線の最初 (左端) 部分の前の図では、オブジェクトは現在の速度が初期速度であるため、すばやく移動しています。 曲線の最後 (右端) 部分では、オブジェクトの速度が 0 であるため、オブジェクトは完全に停止しています。 x-velocity、y-velocity、および回転速度のオブジェクト速度の計算はすべて、この数式を計算に使用します。

慣性プロセッサに使用されるすべての距離は相対的です。 画面座標を使用する場合は、画面座標を操作 (慣性) プロセッサに渡します。絶対座標を使用する場合は、使用しているプロセッサに渡します。 使用している値に関係なく、操作プロセッサは時間の処理にミリ秒のクロック ティックを使用します。 これらの値は、 ProcessTime メソッドを使用して慣性プロセッサに直接渡すか、Process の呼び出しを通じて既定の タイムスタンプを使用して渡すことができます。

速度プロパティと減速プロパティを使用したスムーズ オブジェクト アニメーション

慣性プロセッサ インターフェイスで速度と減速の値を設定し、 Process を呼び出すことで、物理モデルと直接対話することで、スムーズ なアニメーションを有効にすることができます。 プロセスを呼び出すと、オブジェクト操作がトリガーされ、UI の更新が発生します。 慣性プロセッサに渡されるオブジェクト速度の値は、通常、完了時に操作プロセッサから取得されます。 減速値は、オブジェクトをアニメーション化する期間と、計算に使用する単位によって異なります。 値は依存するため、maniplation プロセッサからの入力速度をスケーリングし、減速に任意の値を使用する必要がある場合があります。 TOUCHINPUT 構造体の x プロパティと y プロパティから操作プロセッサに centipixel 値を渡すさまざまなシナリオでは、次の値が一般的です。

シナリオ プロパティ セット 減速値 一般的なベロシティ入力スケーリング Notes
翻訳 DesiredDeceleration 0.003f [なし] : この値を使用すると、タッチ入力を使用すると、長い距離のアニメーションが生成されます。
翻訳 DesiredDeceleration 0.001f タッチ入力の 1/20 の初期速度、マウス入力の場合はなし この値を使用すると、一般的な速度入力の約 2 秒間アニメーション化されます。
翻訳 DesiredDeceleration 0.5f None この値を使用すると、大きな Windows Touch ディスプレイでアニメーションを自然に感じることができます。
回転 DesiredAngularDeceleration 0.000015f 度に変換されたラジアン。 この値を使用すると、タッチ入力を使用すると回転アニメーションが長くなります。
回転 DesiredAngularDeceleration 0.00001f タッチ入力の場合は 1/40 回転デルタ、マウス入力の場合はなし この値はラジアン単位であるため、非常に小さな減速値と速度値を使用する必要があります。
回転 DesiredAngularDeceleration 0.000005f None この値は、大きな Windows Touch ディスプレイで自然な感覚を持ちます。

 

必要なディスプレイスメント プロパティを使用したスムーズ オブジェクト アニメーション

場合によっては、オブジェクトのディスプレイスメントにユーザーの入力を使用する必要はありませんが、画面全体でオブジェクトをスムーズにアニメーション化する必要があります。 この場合は、慣性プロセッサで変位プロパティを使用して、プロセッサが画面全体でオブジェクトを移動するための初期速度を計算できます。

エラスティック 境界を使用してオブジェクトの位置を制御する

画面全体を移動するオブジェクトを作成した後は、通常、ユーザーの視点から外れる前にオブジェクトを停止する必要があります。 慣性プロセッサを使用すると、境界プロパティとエラスティックマージンプロパティを介してこの機能が有効になります。 次の図は、一般的なアプリケーションのさまざまな境界と余白のプロパティを示しています。

境界と弾性余白のプロパティを示すスクリーン ショット

アプリケーションの左、上、右、および下限の境界とエラスティック余白を設定すると、慣性プロセッサは UI 要素を境界内に保持する処理を行います。 オブジェクトが弾性余白に達すると、境界に達するまで速度が低下します。 慣性時に再び余白を残すことはありませんが、オブジェクトの垂直慣性コンポーネントが 0 に減速するまで移動します。 図では、円が左の弾性境界に向かって変位しています。 実線の矢印は、操作の方向を示しています。実線の円はオブジェクトの初期位置です。実線矢印は、円が弾性マージンに当たる前に行われた変更です。破線の矢印は、慣性プロセッサが余白に達した後に円を操作する場所を示しています。破線の円は、オブジェクトが停止する場所を示します。

Note

余白のプロパティを設定すると、境界が外側に移動します。 たとえば、上の境界が 50 に設定され、上の弾性余白を 10 に設定すると、上の境界は実質的に 40 になります。

 

アンマネージ コードでの慣性の処理

慣性

操作