围绕剪裁矩形中心的矩形旋转

时间:2018-04-30 11:04:53

标签: math geometry

我有两个矩形,其中一个是另一个的剪裁。 现在我想围绕裁剪矩形的中心旋转更大的矩形并调整x / y值。

enter image description here

如何在旋转后计算新的x / y值?

我实际上只想围绕较小盒子的中心旋转较大盒子的x / y。因此,较大框的x / y点相对于较小框的顶部/左侧点。我有较小盒子的宽度和高度,所以我可以计算大盒子相对于小盒子中心的x / y点。旋转角度以度为单位。旋转可以是任何程度,例如10。

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  • 确定你想要旋转的角度,确保它适合三角函数(sin(),cos(),...),即直角通常为Pi / 2
  • 如果逆时针旋转,则为负
  • 确定c的坐标,如cx,cy
  • 一个接一个地处理矩形的每个角,总共四个
  • 对于每个角P,当前在坐标px处,py并且移动到px2,py2
    • 使用atan2(py-cy,px-cx)确定当前P和C之间的角度
    • 从度数到弧度(用于三角法)计算弧度=(pi *度)/180.0
    • 将所需的旋转角度添加到当前角度,以获得newangle
    • 确定当前P到C的距离,sqrt((px-cx)(px-cx)+(py-cy)(py-cy))
    • 将距离(不随旋转而变化)乘以适当的三角函数
    • px2 =距离* cos(newangle)
    • py2 = distance * sin(newangle)

答案 1 :(得分:0)

如果要围绕在同一坐标系中定义的点P周围旋转给定点C,可以使用简单的旋转矩阵。计算P相对于C(减法)的坐标,然后对矩阵应用旋转,并通过再次添加C返回原始坐标。

enter image description here

答案 2 :(得分:0)

重要的是旋转中心的坐标和角度。

最紧凑的配方是通过复数(我希望你有一些理解;你实际上不需要复杂的数据类型,你可以扩展公式)。

C为中心,α为角度。然后,对于任何点P,图像Q

给出
Q = (P - C) cis(α) + C

其中cis(α) = cos(α) + i sin(α)

反向旋转简单地由

给出
P = (Q - C) cis(-α) + C.