有没有办法在 Python 中用 matplotlib 顺时针重复一个模式?

Is there a way to iterate over a pattern to repeat it clockwise with matplotlib in Python?

我在 JupyterLab 上使用 matplotlib 绘制汽车,这是 Anaconda 提供的 Python 发行版。我使用 贝塞尔曲线 来做到这一点。

当我准备绘制汽车的车轮时,我意识到获取 Y 车轮图案中的许多线条和形状的每个点并绘制它会非常缓慢且压力很大。看一看:


所以我想知道是否有一种方法可以构建一个形状 (a list of points) 并对其进行 360º 迭代以围绕中心点重复序列并制作轮子。我的意图是把这个形状想象成饼干切割器,然后我只需要用切割器做更多的饼干。

过了很久,我发现我的问题的答案在this其他问题中。 Mark Dickinson 提供的函数 rotate 就是我所需要的。这个函数旋转一个给定的点,所以我所要做的就是将这个函数应用于 PATH 点列表中的所有点。这是我的做法:

def replica(center_of_rotation, times, points, codes, linewidth = 1, c = "black"):
    l = []
    angle = 0
    counter = 1
    while angle <= 360:
        for i in points: 
            l.append(rotate(center_of_rotation, i, math.radians(angle)))
            counter += 1
            if len(l) == len(points):
                ax.add_patch(patches.PathPatch(Path(l, codes), fc="none", transform=ax.transData, color=c, lw = linewidth))
                angle += 360/times
                l = []
            if angle >= 360:
                return

结果很棒,我可以复制任何 PATH 模式 'N' 次。我用它来制造我的兰博基尼的轮子。

  • 模式复制1次:

  • 复制了5次,刚好需要: