java - 旋转矩形中的碰撞检测

标签 java android math collision-detection

我有以下参数

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

如何检查点是否在矩形内?

任何指点将不胜感激。谢谢。

最佳答案

基本检查

如果你的矩形没有旋转,问题仅限于检查 Point (x,y) 是否在某个范围内

(rectangle.x, rectangle.x + rectangle.width)
(rectangle.y, rectangle.y + rectangle.height)

添加旋转

随着矩形的旋转,您可以进行反向旋转,使该点处于“未旋转状态”并进行先前的检查。

如何“取消旋转”点

嗯。如果您的矩形旋转 27º,则“未旋转”必须为 -27º(从相同的旋转中心点开始)。

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

那么,你必须:

  1. 平移物使(0,0)为中心点:即平移原点(-x, -y) 其中(x, y)为旋转点
  2. 在原点应用旋转(见下文)
  3. 撤销第一个变换(translate (x, y) where (x, y) is the point of rotation

原点旋转

你必须进行矩阵乘法 Ax。其中 A 是矩阵,x 是要旋转的点的 (x, y) vector 。

矩阵A构建this way

关于java - 旋转矩形中的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9261673/

相关文章:

java - hibernate主方法调用

java - 从 .der 更新/生成新的 .p12/.jks

android - 带有 Recyclerview 的 ViewPager 上的 NullPointerException

android - AsyncTask 中的 ProgressDialog 停止旋转

Play 商店更新应用程序时的 Android 应用程序生命周期

python - 重叠形式组之间的面积总和

math - float 学有问题吗?

java - 链表通用数组创建错误无向图Java

java - 将几个字符转换为 int

java - 这个 double 是什么格式以及如何转换它?