旋转的矩形碰撞

Mat*_*att 3 java geometry collision-detection rotation

找出一个轴对齐的矩形是否与一个旋转的矩形碰撞的最有效方法是什么?每个类都有一个位置向量和一个大小向量,旋转的类有一个角度值.

phk*_*ler 5

您想使用分离轴定理(SAT).通常它在3d中使用,但它很好地折叠到2d.由于您有一个特殊情况,您需要考虑的唯一轴是矩形的4个主轴:

[ 1,0 ]
[ 0,1 ]
[ sin(theta), cos(theta) ]
[ -cos(theta), sin(theta) ]

要检查轴,请计算每个顶点与该轴的点积.然后检查2组值的最小值和最大值,看它们是否重叠.如果4轴中的任何一个给出不重叠的范围,则矩形不重叠(您已找到分离轴).如果所有4轴显示重叠,则矩形相交.

这是最近关于同一问题的SO问题: 分离轴定理和Python

这是维基百科的文章

http://en.wikipedia.org/wiki/Separating_axis_theorem