可能重复:
Calculate Bounding box coordinates from a rotated rectangle, Picture inside.
我有一个旋转的矩形, 那么我如何计算2D坐标中旋转矩形的轴对齐边界框的大小?
附加图片 http://img88.imageshack.us/img88/503/rotp.png
我知道x,y,o(角度) 但我如何得到一个,b谢谢
答案 0 :(得分:32)
a = abs(x * sin(o)) + abs(y * cos(o))
b = abs(x * cos(o)) + abs(y * sin(o))
答案 1 :(得分:5)
要构造轴对齐的边界框,必须找到旋转框的极值点。即,
给定矩形'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
边界框的值是旋转点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])
有关2D旋转的讨论,请参阅http://en.wikipedia.org/wiki/Transformation_matrix#Rotation
答案 2 :(得分:1)
嗯,你没有提供很多细节。我假设您知道矩形的高度和宽度将为您提供无论旋转的区域。如果您只有x,y数据点,则使用sqrt((x1-x1)^2 + (y1-y2)^2)
。获得一方的长度。
你澄清了你的问题所以,如果你有一个矩形,你知道左上角的角度是从顶部旋转,所以左侧看起来像这样。
/
/
a =正弦(alpha)*宽度
b =余弦(alpha)*宽度
c =正弦(alpha)*高度
d =余弦(alpha)*高度
width = a + d
height = b + c
确保你得到正确的角度,这里有点难以澄清。如果你得到另一个角度,那么它将出现在
width = b + c
height = a + d
答案 3 :(得分:0)
对于旋转矩形的轴对齐框,可以找到4个旋转坐标中每个的最小值和最大值。 minX和minY变为1角,maxX和maxY变为另一角。
答案 4 :(得分:-1)
计算原始矩形的面积。区域在旋转时不会改变。
答案 5 :(得分:-1)
使用[苍鹭的三角形区域计算器]
s = (a + b + c) / 2
或三角形周长的1/2(
A = SquareRoot(s * (s - a) * (s - b) * (s - c))
哪里
a=SquareRoot((X1-X2)^2+(Y1-Y2)^2) [Side 1 Length]
b=SquareRoot((X1-X3)^2+(Y1-Y3)^2) [Side 2 Length]
c=SquareRoot((X2-X3)^2+(Y2-Y3)^2) [Side 3 Length]
X1,Y1,X2,Y2,X3,Y3
是任意三点(角落)的协调
RectangleArea=2*A
或没有[苍鹭的公式三角区域计算器]直接,点的顺序在这里很重要。
P1----P2
| |
P3----P4
a=SquareRoot((X1-X2)^2+(Y1-Y2)^2) [Side 1 Length]
b=SquareRoot((X1-X3)^2+(Y1-Y3)^2) [Side 2 Length]
RectangleArea=a*b
答案 6 :(得分:-3)
这有点复杂,但对于一个矩形Area = b * h = length * width
。