分析矩形绕任意点旋转N度

一、点绕原点旋转A度

二维平面的旋转矩阵是\begin{bmatrix} cosA & -sinA \\ sinA & cosA \end{bmatrix}

点p(x,y)绕原点(0,0)旋转A度 就是\begin{bmatrix} cosA & -sinA \\ sinA & cosA \end{bmatrix} * \binom{x}{y}

旋转后的点为p1(x1,y1)其中:x1 =  cosA*x -sinA*y ;   y1 = sinA*x + cosA * y;

二、点绕任意点旋转A度

点(x,y)绕任意点(ox, oy)旋转A度的做法分两步:

1:转换到绕原点(0,0)的旋转,即:两个点都平移(-ox, -oy),

则点p的新坐标就是p(x - ox, y - oy)

旋转后的点为p1(x1,y1)其中:

x1 =  cosA*(x - ox) -sinA*( y - oy) ;   y1 = sinA*(x - ox) + cosA * ( y - oy);

2: 再把点平移回去,

最终点就是(x1 + ox, y1 + oy)

三、矩形绕任意点旋转

形四个点是r1, r2, r3, r4

形中心点rc = (r1 + r3) / 2

1.先计算rc旋转后的点, 记为nrc,

2.计算旋转后中心点 和 旋转前中心点的插值, 即偏移量, del =nrc - rc

3.形的四个顶点平移旋转偏移量, 形的顶点就变成(nr1, nr2, nr3, nr4)

其中nr1 = r1+del;  nr2 = r2+del; nr3 = r3+del; nr4 = r4+del;

4.分别对矩形的四个顶点(nr1, nr2, nr3, nr4)绕中心点nrc旋转, 旋转后的点就是矩形的最终位置。

 

你可能感兴趣的:(Unity3D,图形学,图形渲染)