旋转矩形中的碰撞检测

Rag*_*har 1 java math android collision-detection

我有以下参数

  1. x,y坐标(仅左上角)旋转的矩形
  2. 旋转角度
  3. 矩形旋转通过中心
  4. 矩形的宽度和高度
  5. 必须检查其在矩形内存在的点的坐标

如何检查点是否位于矩形内?

任何指针将不胜感激.谢谢.

hel*_*ios 5

基本检查

如果您的矩形未旋转,则问题仅限于检查Point(x,y)是否在某个范围之间

(rectangle.x, rectangle.x + rectangle.width)
(rectangle.y, rectangle.y + rectangle.height)
Run Code Online (Sandbox Code Playgroud)

添加旋转

当旋转矩形时,您可以进行反向旋转以使该点处于"未旋转状态"并进行上一次检查.

如何"解旋"这一点

好.如果您的矩形旋转27º,则"非旋转"必须为-27º(从相同的旋转中心点开始).

如何旋转给定旋转中心点的点?

好吧,你必须:

  1. 将事物翻译成(0,0)中心点:它是,翻译原始点(-x,-y),其中(x,y)是旋转点
  2. 在原点上应用旋转(参见下面的部分)
  3. 撤消第一个转换(translate(x,y),其中(x,y)是旋转点

旋转原点

你必须制作矩阵乘法Ax.其中A是矩阵,x是旋转点的(x,y)向量.

矩阵A是建立这样