a = abs(x * sin(o)) + abs(y * cos(o))
b = abs(x * cos(o)) + abs(y * sin(o))
Для прямоугольника, выровненного по оси повернутого прямоугольника, вы найдете минимум и максимум каждой из 4 повернутых координат. MinX и minY становятся одним углом, а 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
Или напрямую без [Heron's Formula Triangle Area Calculator], здесь важна последовательность точек.
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
Это немного сложно, но для прямоугольника, Площадь = b * h = длина * ширина
.
Ну, вы не дали много деталей. Я предполагаю, что вы знаете, что высота и ширина прямоугольника дадут вам площадь независимо от вращения. Если у вас есть только точки данных x,y, то вы используете sqrt((x1-x1)^2 + (y1-y2)^2)
. Для получения длины стороны.
Вы уточнили свой вопрос, поэтому если у вас есть прямоугольник и вы знаете, что угол от верхнего левого угла повернут от вершины так, что левая сторона выглядит следующим образом.
/
/
a = sine(alpha)*width
b = косинус(альфа)*ширина
c = синус(альфа)*высота
d = косинус(альфа)*высота
ширина = a + d
высота = b + c
Убедитесь, что вы правильно указали угол, здесь это трудно объяснить. Если вы получите другой угол, то получится
ширина = b + c
высота = a + d
Чтобы построить выровненную по оси ограничивающую рамку, нужно найти крайние точки повернутой рамки. то есть,
задан прямоугольник «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])
Для обсуждения двумерных вращений см. http://en.wikipedia.org/wiki/Transformation_matrix#Rotation