如何围绕任意点旋转一组2D形状

Gri*_*fin 2 c++ math graphics rotation

我正在制作一个"Body"类,它将一堆2D形状组合在一起,形成一个可移动的可旋转体.

我需要知道的是我如何旋转每个单独的形状,使其看起来像整个身体旋转,而不是每个形状做它自己围绕它的中心旋转.我不能只将每个形状旋转中心更改为同一点,因为这也会导致它们的放置受到影响.

因此,我需要找到某种方程式,使用身体中心重新定位和重新旋转身体中的每个个体形状,以保持身体形状不变形?

我怎样才能做到这一点?

ja7*_*a72 10

通过任意点旋转的方法是首先减去点坐标,围绕原点进行旋转,然后添加点坐标.

x2 = px + (x1-px)*cos(q)-(y1-py)*sin(q)
y2 = py + (x1-px)*sin(q)+(y1-py)*cos(q)
Run Code Online (Sandbox Code Playgroud)

px, py旋转点坐标,x1,y1原始2D形状顶点和x2,y2旋转坐标以及q弧度角度在哪里.

  • 以下是有关http://en.wikipedia.org/wiki/Rotation_matrix#In_two_dimensions的详细说明. (2认同)