PaperJs Регулировка ширины и высоты после поворота

У меня есть элемент, который вращается, и я хочу изменить базу ширины и высоты без вращения.

Когда я поворачиваю элемент, ширина и высота полностью меняются, а направление изменения размера остается северным и южным. занятой кот

Как убедиться, что ширина обновлена ​​на основе нового поворота  занятой кот

Мне нужно изменить их настройку, или кто-нибудь знает математическую формулу, которую я могу использовать для расчета новой базы размера при вращении.

Спасибо за любую помощь или ссылку.


person user747344    schedule 04.11.2014    source источник


Ответы (1)


Свойство path.bounds будет содержать границы объекта даже при повороте. Это упрощает реализацию того, что вы нарисовали. См. Пример, который я сделал ниже.

// Create an empty project and a view for the canvas:
paper.setup(document.getElementById('myCanvas'));
// Make the paper scope global, by injecting it into window:
paper.install(window);

// Create the original rectagle
var point = new Point(20, 20);
var size = new Size(60, 60);
var rect = new Path.Rectangle(point, size);
rect.fillColor = new paper.Color(1, 0, 0)
rect.rotation = 15;

// Create the bounds rectangle
var boundsPath = new Path.Rectangle(rect.bounds);
boundsPath.strokeColor = new Color(0, 0, 0);


// Make a nice little animation:
function onFrame(event) {
  // Every frame, rotate the path by 2 degrees 
  rect.rotate(2);

  // Recreate the bounds rectangle
  boundsPath.remove();
  boundsPath = new Path.Rectangle(rect.bounds);
  boundsPath.strokeColor = new Color(0, 0, 0);
}

view.draw();
view.onFrame = onFrame;
<!DOCTYPE html>
<html>

<head>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.9.22/paper-full.min.js"></script>

</head>

<body>
  <canvas id="myCanvas" resize></canvas>
</body>

</html>

person Mikko Virkkilä    schedule 05.04.2015