Как получить размер повернутого прямоугольника [дубликат]
Возможные Дубликаты:
вычислить координаты ограничивающей рамки из повернутого прямоугольника, изображение внутри.
У меня есть повернутый прямоугольник, Итак, как вычислить размер выровненной по оси ограничительной рамки для повернутого прямоугольника в 2D-координатах?
Прикрепить Изображение http://img88.imageshack.us/img88/503/rotp.png
Я знаю x, y ,o (угол) но как мне получить, б
спасибо
7 ответов
чтобы построить ограничивающую рамку, выровненную по оси, необходимо найти крайние точки повернутой рамки. т. е.
заданный прямоугольник "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'..Р4'; таким образом,
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
Ну, вы не дали много деталей. Я предполагаю, что вы знаете, что высота и ширина прямоугольника даст вам площадь независимо от вращения. Если у вас есть только точки данных x,y, то вы используете sqrt((x1-x1)^2 + (y1-y2)^2)
. Чтобы получить длину стороны.
вы уточнили свой вопрос, поэтому, если у вас есть прямоугольник, и вы знаете, что угол от верхнего левого угла поворачивается от вершины, поэтому левая сторона выглядит так.
/
/
ля= синус(Альфа)*ширина
б = Косинус(Альфа)*ширина
с = синус(Альфа)*высота
д = Косинус(Альфа)*высота
width = a + d
высота = б + c
Убедитесь,что вы получаете правильный угол, здесь трудно его прояснить. Если вы получите другой угол, то он выйдет на
ширина = б + c
высота = a + d
для выровненной по оси коробки повернутого прямоугольника вы найдете минимум и максимум каждой из 4 повернутых координат. MinX и minY становятся 1 углом, а maxX и maxY становятся другим углом.
использовать [калькулятор треугольника Формулы Герона]
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