好的,我从一张空白地图开始,它是 512x512 = 262144 像素/位置。
我需要一种方法来有效地在其上绘制一些对象,然后能够找到空闲空间的区域,以便以后可以将更多不同的对象添加到这些空闲区域。我想不出存储这些数据的最佳方式,或者找到空闲区域的算法。
我有一个可行的解决方案,但计算需要很长时间。我正在使用 AS3,以防影响最佳解决方案。
有什么建议吗?谢谢。
好的,我从一张空白地图开始,它是 512x512 = 262144 像素/位置。
我需要一种方法来有效地在其上绘制一些对象,然后能够找到空闲空间的区域,以便以后可以将更多不同的对象添加到这些空闲区域。我想不出存储这些数据的最佳方式,或者找到空闲区域的算法。
我有一个可行的解决方案,但计算需要很长时间。我正在使用 AS3,以防影响最佳解决方案。
有什么建议吗?谢谢。
您的问题几乎与操作系统中的内存分配问题相同 - 碎片、清理、适当的连续空间使用问题也都出现在那里。我已经阅读了如何在操作系统中解决此问题:从 Wikipedia 开始。
在 Bitmap 和 BitmapData 类中有很多方法可以处理位图。
我从来没有做过这样的事情,但你可以试试。我相信最好的方法是在地图上绘制对象。然后,使用方法 bitmapData.getColorBoundsRect() 获取非空闲区域。这些 AS3 原生方法非常非常快!
这是文档:http ://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/BitmapData.html
干杯,CaioToOn!
首先想到的是使用多边形填充技术。将您的空间视为一组扫描线,每个 Y 坐标一条扫描线。在每条扫描线上,存储一个 X 坐标列表,表示空闲空间和占用空间之间的转换。