У меня есть прямоугольник, к которому уже применен поворот. Я хочу получить не повернутые размеры (x, y, ширина, высота).
Вот размеры элемента в настоящее время:
Bounds at a 90 rotation: {
height 30
width 0
x 25
y 10
}
Вот размеры после поворота, равные none:
Bounds at rotation 0 {
height 0
width 30
x 10
y 25
}
Раньше я мог установить вращение на 0, а затем прочитать обновленные границы. Однако в одной из функций, которые я использовал, есть ошибка, поэтому теперь я должен сделать это вручную.
Есть ли простая формула, чтобы получить границы при вращении 0, используя информацию, которая у меня уже есть?
Обновление: объект вращается вокруг центра объекта.
ОБНОВИТЬ:
Что мне нужно, это что-то вроде функции ниже:
function getRectangleAtRotation(rect, rotation) {
var rotatedRectangle = {}
rotatedRectangle.x = Math.rotation(rect.x * rotation);
rotatedRectangle.y = Math.rotation(rect.y * rotation);
rotatedRectangle.width = Math.rotation(rect.width * rotation);
rotatedRectangle.height = Math.rotation(rect.height * rotation);
return rotatedRectangle;
}
var rectangle = {x: 25, y: 10, height: 30, width: 0 };
var rect2 = getRectangleAtRotation(rect, -90); // {x:10, y:25, height:0, width:30 }
Я нашел подобный вопрос здесь.
ОБНОВЛЕНИЕ 2
Вот код, который у меня есть. Он пытается получить центральную точку линии, а затем x, y, width и height:
var centerPoint = getCenterPoint(line);
var lineBounds = {};
var halfSize;
halfSize = Math.max(Math.abs(line.end.x-line.start.x)/2, Math.abs(line.end.y-line.start.y)/2);
lineBounds.x = centerPoint.x-halfSize;
lineBounds.y = centerPoint.y;
lineBounds.width = line.end.x;
lineBounds.height = line.end.y;
function getCenterPoint(node) {
return {
x: node.boundsInParent.x + node.boundsInParent.width/2,
y: node.boundsInParent.y + node.boundsInParent.height/2
}
}
Я знаю, что в моем примере используется прямой угол, и вы можете поменять местами x и y, но вращение может быть любым.
ОБНОВЛЕНИЕ 3
Мне нужна функция, которая возвращает необращенные границы прямоугольника. У меня уже есть границы для определенного поворота.
function getUnrotatedRectangleBounds(rect, currentRotation) {
// magic
return unrotatedRectangleBounds;
}