如何获得旋转矩形的大小

Nor*_*rn 9 geometry

可能重复:
从旋转的矩形计算边界框坐标,图片在里面.

我有一个旋转的矩形,那么我如何计算2D坐标中旋转矩形的轴对齐边界框的大小?

附上图片 http://img88.imageshack.us/img88/503/rotp.png

我知道x,y,o(角度),但我怎么得到a,b

谢谢

Sco*_*den 35

a = abs(x * sin(o)) + abs(y * cos(o))
b = abs(x * cos(o)) + abs(y * sin(o))
Run Code Online (Sandbox Code Playgroud)

  • 对不起,不正确 - 即使是弧度.我现在已经在你的答案中添加了abs()术语 - 通过这种改变它应该是正确的.(原始版本是``a = x*sin(o)+ y*cos(o)``和``b = x*cos(o)+ y*sin(o)``,这导致错误估计Campbeln描述如上.) (3认同)
  • 由于缺少图片...`x`是原始宽度,`y`是原始高度,`a`是新边界框的高度,`b`是新边界框的宽度.有了这些定义,这个公式对我来说很好. (3认同)
  • 在这里计算旋转矩形的边界框的所有答案中,这个给了我正确的结果。仅供参考:度数 = o * (Math.PI/180); (2认同)

小智 6

要构造轴对齐的边界框,必须找到旋转框的极值点.即

给定一个矩形'P',由点P1 =(0,0)给定,P2 =(x,0),P3(x,y),P4(0,y),旋转'R'度; 找到minX,maxX,minY,maxY,使得[[minX,minY],(maxX,maxY)]框完全限制旋转的'P'.

                          +-------P3'----+maxY
                          |     /    \   |
  P4------P3              |   /        \ |
   |      |    rotate     | /            P2'
   |      | => by 'R' =>  P4'           /|
   |      |    degrees    | \         /  |
  P1------P2              |   \     /    |
                          |     \ /      |
                          +-----P1'------+minY
                         minX           maxX
Run Code Online (Sandbox Code Playgroud)

边界框的值是旋转点P1'... P4'的分量的最小值/最大值; 从而,

minX=min(P1'[x],P2'[x],P3'[x],P4'[x])
maxX=max(P1'[x],P2'[x],P3'[x],P4'[x])
minY=min(P1'[y],P2'[y],P3'[y],P4'[y])
maxY=max(P1'[y],P2'[y],P3'[y],P4'[y])
Run Code Online (Sandbox Code Playgroud)

有关2D旋转的讨论,请参阅http://en.wikipedia.org/wiki/Transformation_matrix#Rotation