2016-04-14 4 views
0
  • のは、私は、設定された時間にわたって100の幅と高さ50
  • た矩形があるとしましょう、動き回る長方形のポイントがあるだろう、ミリ秒ごとを言うことができます。
  • ミリ秒ごとに、ポイント位置が少し変わったり、大きく変化したりすることはありません。
  • 元の矩形を2倍に拡大したいので、矩形の50×25だけが一度に表示されます(元のサイズの1/4)。
  • 私はズームイン時に常にポイントを表示しておきたいので、50×25の矩形がポイントを見えるように移動します。
  • 私の質問は、小さな四角形の中に常にカーソルを表示しておくことです。
  • 単純な実装では、小さい方の矩形の中心をミリ秒ごとにポイントの位置にして、常に見えるようにします。しかし、これは視覚的には最適ではないでしょう。たとえば、ポイントが右の1ピクセルに移動する場合、カーソルはまだ表示されているので、移動する必要はありません。
  • 不必要な動きを最小限に抑え、可能な限り滑らかにするために、ミリ秒ごとに小さな四角形の理想的な中心を見つけるのに役立つアルゴリズム/リソースがあるかどうか疑問に思っていました。また、ミリ秒ごとにポイントのすべての場所が事前に利用可能になります。どんな提案/フィードバックも感謝しています。
+0

最初に試してみるのは、移動平均です。最後に観測されたN個の位置を平均する(すなわち移動平均を計算する)。 –

答えて

0

ズームインするたびに、四角形が4つに分割されます。カーソルがある矩形を確認し、その矩形だけを見る。カーソルが矩形に変わったら、その矩形に移動します。あなたがカーソルの位置を知っていると、modとdivの助けを借りて、あなたが見る必要がある小さな四角形を見つけることができます。

+0

このアプローチの問題は、動きがまったく滑らかにならないことです。また、例えば、隣接する2つの点があり、それぞれが異なる象限にある場合、それらの間の切り替えは劇的な変化になります。 –

+0

あなたは滑らかさとして何を定義しますか?あなたは可能な限り大きな動きを得て、カーソルのほんの一部としてカーソルに向かって動くことができます。 – kameranis

+0

小さな矩形が大きな矩形の上を動き回っているように、必要なだけ動きは少ないが、ジャンプのようには見えないように、滑らかである。パンニングのように見えるようにしたい。第2部を説明できますか? –

0

私はこのようにそれで行くだろう:ポイントは、それが、設定が完了している場合は、現在のビュー

  • の内側を意味し、まだ表示されている場合

    • チェック。
    • そうでない場合は、ビューポートをできるだけ小さく移動する必要があります。これは、ビューポートの最も近い辺とポイントの間の距離を計算することを意味します。

    これを行うには、ビューポートの4つの頂点の座標とポイントの座標が必要です。 2つの座標があるので、ビューポートの辺を線方程式として扱い、thisを適用して最も近いものを決定することができます。

    "移動"する側を知ったら、例えば、その点を "移動"側の中間点として取り、その周りのビューポートを再構築することができます(おそらく、 )。

  • 関連する問題