我有以下参数
- 旋转矩形的 x,y 坐标(仅左上角)
- 旋转角度
- 矩形通过中心旋转
- 矩形的宽度和高度
- 必须检查其存在于矩形内的点的坐标
如何检查点是否在矩形内?
任何指点将不胜感激。谢谢。
最佳答案
基本检查
如果你的矩形没有旋转,问题仅限于检查 Point (x,y) 是否在某个范围内
(rectangle.x, rectangle.x + rectangle.width)
(rectangle.y, rectangle.y + rectangle.height)
添加旋转
随着矩形的旋转,您可以进行反向旋转,使该点处于“未旋转状态”并进行先前的检查。
如何“取消旋转”点
嗯。如果您的矩形旋转 27º,则“未旋转”必须为 -27º(从相同的旋转中心点开始)。
如何旋转给定旋转中心点的点?
那么,你必须:
- 平移物使(0,0)为中心点:即平移原点(-x, -y) 其中(x, y)为旋转点
- 在原点应用旋转(见下文)
- 撤销第一个变换(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/