移动一个矩形关于另一个矩形旋转
Moving a rectangle regarding another rectangle rotation
我有两个矩形:红色和绿色。对于他们每个人,我都有以下信息:
- 中心点(
x
和 y
坐标)。
- 旋转角度
- 宽度和高度
矩形将始终在正坐标中移动。 编辑: 任何坐标都不能为负:矩形始终位于正坐标中。因此,中心 永远不会是 (0,0).
问题
我有一个起始位置。为了简化示例,假设我的红色和绿色矩形位于如下位置:
现在,我使用介于 0º 和 90º 之间的角度 phi
旋转红色矩形。然而,绿色矩形需要旋转并保持其相对于红色矩形的位置。绿色矩形不仅旋转而且移动。
看图(素描质量请见谅):
我的问题:
如何获取绿色矩形的新中心坐标?
旋转大约某个点 (rx, ry)
。
编辑: 正如评论所说,旋转中心(rx, ry)
是红色中心。 公式保持不变。
如果绿色中心在(gx, gy)
,那么旋转后它的坐标是
gx' = rx + (gx - rx) * Cos(Phi) - (gy - ry) * Sin(Phi)
gy' = ry + (gx - rx) * Sin(Phi) + (gy - ry) * Cos(Phi)
我有两个矩形:红色和绿色。对于他们每个人,我都有以下信息:
- 中心点(
x
和y
坐标)。 - 旋转角度
- 宽度和高度
矩形将始终在正坐标中移动。 编辑: 任何坐标都不能为负:矩形始终位于正坐标中。因此,中心 永远不会是 (0,0).
问题
我有一个起始位置。为了简化示例,假设我的红色和绿色矩形位于如下位置:
现在,我使用介于 0º 和 90º 之间的角度 phi
旋转红色矩形。然而,绿色矩形需要旋转并保持其相对于红色矩形的位置。绿色矩形不仅旋转而且移动。
看图(素描质量请见谅):
我的问题:
如何获取绿色矩形的新中心坐标?
旋转大约某个点 (rx, ry)
。
编辑: 正如评论所说,旋转中心(rx, ry)
是红色中心。 公式保持不变。
如果绿色中心在(gx, gy)
,那么旋转后它的坐标是
gx' = rx + (gx - rx) * Cos(Phi) - (gy - ry) * Sin(Phi)
gy' = ry + (gx - rx) * Sin(Phi) + (gy - ry) * Cos(Phi)