我应该如何编码时间轴的后端



我想创建一个程序与时间轴很像那些你会看到在视频编辑器。放置在该时间轴上的事件将具有开始时间和结束时间(或长度?)它将有可能自由移动时间轴的播放头,向前和向后,甚至控制它的速度。重要的是,当playhead在物体上移动时"进入"或"退出"物体时,它应该触发事件。我不想使用计时器,因为可能会有很多这样的事件,它可能会效率低下。

看这个问题最好的方法是什么?我已经编写了图形部分(使用QGraphicsView,其中使用自定义QGraphicsItems表示事件),现在我正在寻找实现后端的最佳方法。

我的问题有意义吗?是不是太模糊了?

您似乎需要一个有效支持以下操作的数据结构:

  1. 插入和删除时间间隔。
  2. 移动一个时间间隔
  3. 查询与某个时间重叠的所有时间间隔

对此,您可能想要查看区间树数据结构,它有效地支持操作(1)和(3)。您可以通过删除现有段然后将其重新插入到区间树中来实现操作(2)。

要实现读指针,只需连续查询段树中与当前时间重叠的所有段。

希望这对你有帮助!

相关内容

最新更新