Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Animation de spirale d'archimède


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Animation de spirale d'archimède
    Bonjour
    J'arrive à afficher des animations en cartésien.
    J'arrive à afficher une spirale d’Archimède en polaires.
    Je n'arrive pas à animer une spirale d'Archimède en polaires.
    d'avance merci de votre aide.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    # -*- coding: utf-8 -*-
    """
    Created on Tue Mar 31 19:19:13 2020
     
    @author: julnar
    Animation polaire archimède essai
    R = f(THETA)
    """
     
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    ""
    fig = plt.figure(figsize=(6,6))
    ax = plt.subplot(111, polar=True)
    ""
    rdata, tdata = [], []                       # déclaration listes des X et Y à afficher
    ln, = ax.plot(rdata, tdata)                 # affichage du fond
    ""
    theta = np.linspace(0, 6.0*np.pi, 200)      #theta en liste   
    ""
    # crér l'arrière de l'animation qui sera présent sur chaque image
    def init():
       ax.set_xlim(0, 2.0*np.pi)
       ax.set_ylim(0,10)
       ln.set_data(rdata,tdata)
       return ln,
    ""
    def update(frame):
        # met la valeur x courante de frame
        tdata.append(theta)  
        "place de la foncion ydata.append(f(frame)"                   
        rdata.append(1.19*theta)                # ro = f(theta) avec theta= frame
        ln.set_data(rdata, tdata)               # rempli line avec ro et theta courrants 
        return ln,
     
    lenteur = 20                                # lenteur de l'animation
    anim = FuncAnimation(
        fig, update, frames=theta,
        init_func=init,blit=True, interval = lenteur,repeat=False)

  2. #2
    Rédacteur



    Exemple :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #! python3
    # coding: utf-8
     
    from termcolor import cprint
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.animation as anim
     
    r = np.arange(0, 12, 0.01)
    theta = 2.0 * np.pi * r
     
     
    def plot_cont(xmax):
        y = []
        x = []
        fig = plt.figure()
        ax = fig.add_subplot(111, projection='polar')
     
        def update(i):
            y.append(theta[i])
            x.append(r[i])
            ax.clear()
            ax.plot(x, y)
            #cprint('{} : {} {}'.format(i, r[1], theta[i]), 'green')
     
        # a n'est pas utilisé ailleurs, mais il est indispensable
        # au fonctionnement de l'animation
        a = anim.FuncAnimation(fig, update, frames=xmax, interval=10, repeat=False)
        plt.show()
     
     
    max = len(r)
     
    plot_cont(max)

  3. #3
    Candidat au Club
    remerciements
    bonjour danielhagnoul

    Merci beaucoup, cela fonctionne.
    J'ai compris le détail du passage de l'index de la liste des angles d'anim à update .