Drawing a Rotated Rectangle

后端 未结 6 803
情歌与酒
情歌与酒 2020-12-06 17:43

I realize this might be more of a math problem.

To draw the lines for my rectangles I need to solve for their corners. I have a rectangle center at (x,y) With a def

6条回答
  •  广开言路
    2020-12-06 18:02

    First transform the centre point to 0,0

    X' = X-x

    Y' = Y-y

    Then rotate for an angle of A

    X'' = (X-x) * cos A - (Y-y) * sin A

    Y'' = (Y-y) * cos A + (X-x) * sin A

    Again transform back the centre point to x,y

    X''' = (X-x) * cos A - (Y-y) * sin A + x

    Y''' = (Y-y) * cos A + (X-x) * sin A + y

    Hence compute for all 4 points of (X,Y) with following transformation

    X''' = (X-x) * cos A - (Y-y) * sin A + x

    Y''' = (Y-y) * cos A + (X-x) * sin A + y

    where x, y are the centre points of rectangle and X,Y are the corner points You have n't defined correctly even the corner points when Angle is 0 as I have given in the comments.

    After substituting you will get

    UL  =  x + ( Width / 2 ) * cos A - ( Height / 2 ) * sin A ,  y + ( Height / 2 ) * cos A  + ( Width / 2 ) * sin A
    UR  =  x - ( Width / 2 ) * cos A - ( Height / 2 ) * sin A ,  y + ( Height / 2 ) * cos A  - ( Width / 2 ) * sin A
    BL =   x + ( Width / 2 ) * cos A + ( Height / 2 ) * sin A ,  y - ( Height / 2 ) * cos A  + ( Width / 2 ) * sin A
    BR  =  x - ( Width / 2 ) * cos A + ( Height / 2 ) * sin A ,  y - ( Height / 2 ) * cos A  - ( Width / 2 ) * sin A
    

    I think this suits your solution.

提交回复
热议问题