阿基米德螺线和花瓣曲线的Python绘制

from matplotlib import pyplot as plt
import numpy as np

def plt_draw_dynamic(x, y):
    for i in range(x.shape[0]):
        plt.pause(0.001)
        plt.cla()
        plt.xlim((-200, 200))
        plt.ylim((-200, 200))
        plt.plot(x[:i], y[:i])
    plt.draw()

def draw_polar_rose():
    """
    花瓣曲线,https://zh.wikipedia.org/wiki/%E6%9E%81%E5%9D%90%E6%A0%87%E7%B3%BB
    """
    theta = np.arange(-np.pi, np.pi, 0.001)
    a = 10
    # 当k是偶数时曲线将是2k个花瓣,如果k为非整数,将产生圆盘状图形,且花瓣数也为非整数
    k = 15.5
    r = a * np.cos(k * theta)
    x = r * np.cos(theta)
    y = r * np.sin(theta)
    plt_draw_dynamic(x, y)
    # plt.plot(x, y)
    # plt.show()

def draw_ajmd_curve():
    """
    阿基米德螺线,
    改变参数a将改变螺线形状,b控制螺线间距离,通常其为常量。
    阿基米德螺线有两条螺线,一条θ>0,另一条θ<0。两条螺线在极点处平滑地连接。把其中一条翻转 90°/270°得到其镜像,就是另一条螺线。
    """
    theta = np.arange(0, 6 * np.pi, 0.001*6*np.pi)
    a = 0.1
    b = 10
    r = a + b * theta
    x = r * np.cos(theta)
    y = r * np.sin(theta)
    plt_draw_dynamic(x, y)
    # plt.plot(x, y)
    # plt.show()


if __name__ == '__main__':
    draw_ajmd_curve()

 

posted @ 2023-11-01 10:07  Anm半夏  阅读(72)  评论(0编辑  收藏  举报