Подтвердить что ты не робот

Поворот прямоугольника вокруг собственного центра в SVG

У меня есть следующий код:

<svg>

<defs>
<rect id = "myRect"
      x = "10"
      y = "10"
      height = "120"
      width = "120"
      stroke-width = "2px"
      stroke = "red"
      fill = "blue" />

</defs>


<g transform = "translate(100,30)">
  <use xlink:href = "#myRect" />
</g>

<g transform = "translate(100, 100) rotate(45 ? ?)">

  <rect id = "myRect"
      x = "10"
      y = "10"
      height = "120"
      width = "120"
      stroke-width = "2px"
      stroke = "green"
      fill = "yellow" />
</g>

</svg>

Когда я переводю прямоугольник без вращения, он работает нормально. Но когда я вращал его, я хотел повернуть его вокруг своей оси. Что мне нужно передать для поворота атрибута?

4b9b3361

Ответ 1

Вам просто нужно добавить половину ширины/высоты прямоугольника, чтобы получить его центр.

<g transform = "translate(100, 100) rotate(45 60 60)">

Для получения дополнительной информации см. преобразование документации функции поворота.

Ответ 2

Принятый ответ работает, если вы рисуете прямоугольник, начинающийся с точки (0,0), который был операцией OP. Однако для меня это не так!

Вот что сработало для меня:

  • Чтобы получить координаты прямоугольника, я использовал $('#rectID').getBBox() метод должен возвращать [ прямая высота, прямая ширина, rect-y, rect x]
  • Центральная точка (rect-x + (прямоугольная ширина /2), rect-y + (rect-height/2))

Вот фрагмент, который я использовал в консоли браузера:

var coord = $('#elemID')[0].getBBox();
coord.x + (coord.width/2) +' '+ coord.y + (coord.height/2)