我是python中的新手。 有人可以告诉我如何在Python中检查一个小矩形(有两个坐标)在另一个Rectangle(有两个坐标)内。
答案 0 :(得分:2)
你可以写点像
def contains(r1, r2):
return r1.x1 < r2.x1 < r2.x2 < r1.x2 and r1.y1 < r2.y1 < r2.y2 < r1.y2
但是,确切的代码取决于矩形的编码。我假设每个矩形由左上角((x1|y1)
)和右下角((x2|y2)
)中的两个点定义,并且矩形不会旋转。
如果使用元组(例如((1,2),(2,4))
)作为矩形的表示,则必须按索引访问字段。我强烈建议您使用命名元组(http://docs.python.org/2/library/collections.html#collections.namedtuple)。
答案 1 :(得分:2)
如果您正在开发游戏。我建议你使用Pygame。我假设您正在讨论使用精灵矩形的碰撞检查?无论如何这里是一个检查两个矩形之间碰撞的算法。我没有为您编写一个函数来复制粘贴并在程序中使用它。这只是您理解的逻辑,也是您自己编写一段代码,根据您的应用程序从这个逻辑中编写的。
def check_collision( A, B )
{
#If any of the sides from A are outside of B
if( bottomA <= topB )
{
return false;
}
if( topA >= bottomB )
{
return false;
}
if( rightA <= leftB )
{
return false;
}
if( leftA >= rightB )
{
return false;
}
#If none of the sides from A are outside B
return true;
}