想象一下,你周围有一个带栅栏的院子,看起来像这样:
______ ________
| |_| _|
| |_
| _ ___|
|__ |_| |
| |__
___| _ |
| | | |_
|________| |______|
Don't ask why it's a weird shape, it's your yard, I didn't make it.
..中间的那个小盒子是一些任意的方形物体。如果该物体朝向院子边缘向任何方向移动,您如何检测物体何时与栅栏相撞?
如果您的院子大了几千倍并且有许多边缘要跟踪,该怎么办?那你怎么能有效地解决这个问题呢?
答案 0 :(得分:1)
将院子视为一个大的矩形,有几个"负面"正方形被移除。
将这些负方格的位置存储在quad tree。
要检查碰撞,请在树上探测与对象相邻的四个方块。
检测操作的时间复杂度取决于四叉树变体的选择,但可以预期负方格数的对数时间。