Обновите положение прямоугольного патча - PullRequest
0 голосов
/ 12 мая 2018

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

Как получить доступ к обновленным координатам?

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl

from matplotlib.transforms import Affine2D

fig = plt.figure()

ax = fig.add_subplot(111)

cx, cy = 6,7
l, w = 3,4
angle = np.deg2rad(30)

ts = ax.transData
t = mpl.transforms.Affine2D().rotate_around(cx,cy,angle)
tr =  t + ts

rect0 = patches.Rectangle((cx - l/2.0,
                        cy - w/2.0), l,w, fill=False, color="blue", alpha=0.50)
rect1 = patches.Rectangle((cx - l/2.0,
                        cy - w/2.0), l,w, color="blue",  alpha=0.50, transform=tr)


print(rect0.get_bbox())
print(rect1.get_bbox())

1 Ответ

0 голосов
/ 13 мая 2018

Это потому, что ограничивающий прямоугольник не изменяется. Использование преобразования, как вы делаете здесь, означает, что прямоугольник трансформируется при рисовании на экране. Сам прямоугольник не изменится вообще.

Чтобы получить координаты преобразованного прямоугольника, необходимо применить преобразование к координатам, как показано в Получить координаты повернутого участка (прямоугольника) matplotlib

coords = rect1.get_bbox().get_points()
print(t.transform(coords))
...