我需要设计一个软件,用户可以在窗口中拖动形状。问题是可能存在数千种形状,并且可能存在一些限制,例如:一个形状不能超过另一个形状。
所以我实际上需要知道如何组织数据存储和一些算法来快速确定是否可以将形状放置在某个特定位置。 我认为这个问题已经解决了很多次,但我不知道如何正确地进行谷歌搜索。能否请您提供一些有关此主题的信息? 谢谢!
答案 0 :(得分:3)
四叉树(2D,八叉树,如果3D)经常用于碰撞检测。想法是递归地划分正方形/立方体中的空间并将形状放置在正确的正方形/立方体中。当您需要对给定形状执行碰撞检测时,您可以只测试同一方形/立方体中的形状。
还有其他结构,每种结构都有优点/缺点,具体取决于您的限制。如果其他形状是静态的,BSP树也可以是一个很好的结构。