- 比方说,我有一个宽100的矩形和高度50
- 在设定时间的过程中,会出现在矩形中移动一个点,可以说每毫秒。
- 在每毫秒之间,点位置可能不会改变,稍微改变或改变很大。
- 现在让我说我想放大原始矩形的2倍,所以矩形的50乘25是可见的(原始大小的1/4)。
- 我想在放大时始终保持该点可见,所以50乘25的矩形将四处移动以保持点可见。
- 我的问题涉及保持光标始终在小矩形内可见。
- 一个幼稚的实现将使小矩形的中心成为每毫秒点的位置,以便它始终可见。但是,这不会在视觉上最佳,因为例如,如果点向右移动一个像素,则应该不需要移动,因为光标仍然可见。
- 我想知道是否有任何算法/资源可以在每毫秒中找出小矩形的理想中心,以最大限度地减少不必要的移动并使其尽可能平滑。此外,每毫秒的点的所有位置都将事先提供。任何建议/反馈表示赞赏。
回答
每次放大时,都会将矩形分成四部分。检查你的光标在哪个矩形中,只看那个矩形。如果光标改变矩形,移动到那个。假设你知道光标的位置,并且在mod和div的帮助下,你可以找到你需要看到的小矩形。
该方法的问题在于运动根本不会平滑。另外,例如,如果有两个相邻点,但每个点位于不同的象限上,则它们之间的切换将会发生剧烈变化。 –
你认为平滑度是什么?您可以获得尽可能大的移动,并将光标移动到光标的一小部分。 – kameranis
像平滑一样,想象一下,如果小矩形在大矩形的顶部移动,只需少量移动即可,但足够使其看起来不像跳跃。我希望它看起来更像是一个平移。你能解释第二部分吗? –
我会去它像这样:
- 检查点仍然是可见的,这意味着当前视图
- 如果是,你就大功告成了里面。
- 如果不是,则要尽可能少地移动视口,这意味着要计算视口最靠近的一侧与点之间的距离。
要做到这一点,您需要视口的四个顶点的坐标和点的坐标。由于您有两个坐标,因此可以将视口的边视为直线方程,并应用this来确定哪一个最接近。
当你知道哪一边要“移动”后,例如,你可以将点看作是“移动”一边的中间点,并围绕该点重建视口(也许会给它一些边缘以确保它可见)。
- 1. 使用GPUImage捕获时减少不必要的运动模糊
- 2. 算法减少
- 3. Hadoop地图减少:算法
- 4. 3NF合成减少算法
- 5. 队列减少算法?
- 6. 阿帕奇猪不必要的重新运行地图减少作业
- 7. 减少jQuery代码的行数,不必要的重复
- 8. 简化和减少不必要的输出显示
- 9. 在类成员变量中减少不必要的相同值
- 10. 我们如何减少不必要的对象加载?
- 11. 通过删除不必要的功能减少JQuery大小
- 12. 减少多实例服务不必要的工作
- 13. 为什么要添加一行计算减少运行时间?
- 14. Python - 减少函数和|运算符
- 15. 减少算法时间的复杂性
- 16. 地图减少TB数据的算法?
- 17. 减少三角剖分的算法
- 18. STL减少运算符和“无效运算符<”错误
- 19. XSLT减法运算符
- 20. 减法运算符python
- 21. strchr(),APT_String和减法运算
- 22. C指针减法运算
- 23. 减少整数级分算法
- 24. SHA256彩虹桌减少算法
- 25. Java分数计算器减少方法
- 26. 减少小数变量(算法)
- 27. 如何设置Hive减少运算符,因为减少运算符始终为0
- 28. 不需要的音频强度减少
- 29. 解析表达式时没有混合运算符时减少/减少冲突
- 30. 减少振动
一个简单的,首先要尝试的可能是移动平均线。平均最后N个观察到的位置(即计算移动平均线)并将矩形居中。 –