可能重复:
从旋转的矩形计算边界框坐标,图片在里面.
我有一个旋转的矩形,那么我如何计算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)
小智 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