3

ビデオ エディターで見られるようなタイムラインを持つプログラムを作成したいと考えています。そのタイムラインに配置されるイベントには、開始時間と終了時間 (または長さ?) があります。タイムラインの再生ヘッドを前後に自由に動かしたり、速度を制御したりすることができます。重要なことは、再生ヘッドがオブジェクトの上を移動するときにオブジェクトに「入る」または「出る」ときに、再生ヘッドがイベントをトリガーする必要があるということです。これらのイベントが非常に多く、おそらく非効率的である可能性があるため、タイマーは使用したくありません。

この問題をどのように見るのが最善でしょうか? 私はすでにグラフィカルな部分をコーディングしました (カスタム QGraphicsItems を使用してイベントが表される QGraphicsView を使用)。今、バックエンドを実装する最良の方法を探しています。

私の質問は理にかなっていますか?曖昧すぎませんか?

4

1 に答える 1

3

次の操作を効率的にサポートするデータ構造が必要なようです。

  1. 時間間隔を挿入および削除します。
  2. 時間間隔をシフトします。
  3. 特定の時間と重複するすべての時間間隔を照会します。

これについては、 (1) と (3) の操作を効率的にサポートするインターバル ツリーデータ構造を参照することをお勧めします。操作 (2) を実装するには、既存のセグメントを削除してから間隔ツリーに再挿入します。

読み取りポインターを実装するには、現在の時間と重なっているすべてのセグメントについて、セグメント ツリーを継続的にクエリするだけです。

お役に立てれば!

于 2013-01-06T22:45:16.333 に答える