dan*_*cek 2 algorithm optimization
因此,我有 n 个可以在舞台上拖动的对象,并且当您将它们拖动得足够近时,我希望它们能够彼此对齐(锁定、磁铁......)。这意味着在每次鼠标移动事件时计算从拖动的对象到舞台上每个其他对象的距离。这个可以优化吗?比如仅将距离与接近的物体进行比较,但我如何知道哪些是接近的物体而不先计算所有距离?
谢谢
ami*_*mit 5
您可以使用kd 树。Kd树具有高效的“查找最近邻居”功能。只需确保已经“到位”的每个对象都在您的树中,并且当您移动元素时 - 找到其最近的邻居,并检查它是否足够近。
另一种选择(主要用于网格)是使用观察者模式。每当您放置一个物体时,请在其“影响力”开始的地方画一条线。为这条线上的每个“单元格”附加一个观察者,当您将一个对象移动到一个单元格时,如果它附加了任何观察者 - 调用它们。
归档时间:
12 年,3 月 前
查看次数:
854 次
最近记录: