Как создать круговую геометрию в python, используя прямоугольные патчи - PullRequest
0 голосов
/ 08 марта 2020

Я хочу создать круговую геометрию в python, используя прямоугольные патчи angular, поэтому я хочу создать прямоугольный патч angular, который при просмотре документации можно создать с помощью

rectangle = plt.Rectangle((x,y), width, height)
plt.gca().add_patch(rectangle)

и затем я хочу расположить его круговым образом, чтобы он создавал то, что выглядит как детектор, с прямоугольниками в виде «блоков детектора». Как я могу этого достичь? Спасибо

Окончательный результат должен выглядеть так, как показано на рисунке Окончательный результат

1 Ответ

0 голосов
/ 09 марта 2020

Чтобы создать фигуру с N прямоугольниками, разделите круг равномерно на N частей, то есть на углы 2pi/N. X и y - это синус и косинус последующих углов, умноженных на радиус внутреннего круга.

Сами прямоугольники необходимо повернуть на средний угол сегмента. И на -90 градусов больше, чтобы иметь ширину, перпендикулярную радиусу.

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

Поскольку патчи не устанавливайте автоматически пределы графика, они должны быть установлены явно.

Вот код, с которого можно начать:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
width = 6
height = 4
num_rect = 12
r = width / 2 / np.sin(np.pi / num_rect)
for i in range(num_rect):
    theta = 2 * np.pi * (i + 0.5) / num_rect
    x = r * np.cos(theta)
    y = r * np.sin(theta)
    rectangle = plt.Rectangle((x, y), width, height, angle=360 * i / num_rect - 90,
                              edgecolor='dodgerblue', facecolor=plt.cm.rainbow(i / num_rect), alpha=.5)
    ax.add_patch(rectangle)

d = (r + height) * 1.1
ax.set_xlim(-d, d)
ax.set_ylim(-d, d)
ax.set_aspect('equal')
plt.show()

resulting plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...