IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langages de programmation Discussion :

Sage:Trajectoire Frisbee: Réunir dans le même graphique des segments obtenus à partir de points de deux listes


Sujet :

Langages de programmation

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Par défaut Sage:Trajectoire Frisbee: Réunir dans le même graphique des segments obtenus à partir de points de deux listes
    Bonjour,

    Sur Sage, je dois réaliser un programme afin de modéliser la trajectoire d'un frisbee. Pour cela, je dois mettre en place un programme de résolution d'équations différentielles avec la méthode d'Euler, ce que j'ai fait. Lorsque je fais fonctionner le programme, il me retourne un graphique avec la trajectoire du frisbee (une parabole dont les points ne sont pas reliés - voir pièce jointe).

    Maintenant, j'aimerais représenter le frisbee sur ma courbe. J'aimerais mettre une forme de frisbee à la place des points. Donc je pensais mettre un segment oblique du type / (moins incliné), pour chaque position prise par le frisbee. Pour cela, j'ai créé une liste avec les coordonnées des points de ma courbe (points "primaires") et une liste avec les coordonnées de points secondaires. Le segment oblique relie le point primaire et le point secondaire, pour chaque position prise par le frisbee. Pour obtenir les coordonnées du premier point secondaire, je prends le premier point primaire et j'ajoute 0.2 en abscisses et 0.2 en ordonnées. Le couple des coordonnées du point secondaire est conservé dans une liste. Je procède ainsi avec chaque point primaire. J'ai donc une liste de points primaires et une liste de points secondaires. Je demande au programme de relier, pour chaque position prise par le frisbee, le point primaire et le point secondaire de même rang dans les listes.

    (Si vous avez peu de temps commencez par ici Mon problème est que le programme me retourne autant de graphiques qu'il y a de segments. J'aimerais qu'ils apparaissent tous sur le même graphique et pas chacun sur un graphique différent, puisque l'intérêt du programme est de retourner la trajectoire du frisbee.

    Voici mon programme:

    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
    reset()
    
    var('vx,vy,m,p,d,l,w,q')
    
    f=function('f',vx,vy,m,p,d)
    g=function('g',vx,vy,m,p,d)
    o=function('o',vx,vy)
    
    f(vx,vy,m,p)=1/(2*m)*1.23*sqrt(vx^2+vy^2)*vx*0.0568*((0.15+1.4*p)-(0.08+2.72*(p+4*pi/180)^2))
    g(vx,vy,m,p)=-9.81+1/(2*m)*1.23*sqrt(vx^2+vy^2)*vy*0.0568*((0.15+1.4*p)-(0.08+2.72*(p+4*pi/180)^2))
    o(vx,vy) = arctan(vy/vx)
    
    def frisbeeeuler(v0,y0,a,b,n,m,d,p,q):
        #d est l'angle entre l'axe des x et le vecteur vitesse
        #p est l'angle d'attaque du frisbee par rapport à l'axe des x
        if a<0:
            return("pas possible")
        if a>b:
            return("pas possible")
        else:
            vy0=v0*sin(d)
            vx0=v0*cos(d)
            h=((b-a)/n)
            L=[[vx0,vy0]]#liste des vx et vy
            M=[[a,y0]]#liste des positions
            A=[d] #liste des angles vecteur viteesse avec l'axe des x
            K=[] #liste des coordonnées des points C
            G=[]
            t=Graphics()
            for i in range (1,n+1):
                L.append([(L[i-1][0]+h*f(L[i-1][0],L[i-1][1],m,p,A[i-1])).n(10),(L[i-1][1]+h*g(L[i-1][0],L[i-1][1],m,p,A[i-1])).n(10)])
                M.append([M[i-1][0]+L[i-1][0]*h.n(5),M[i-1][1]+L[i-1][1]*h.n(5)])
                A.append(o(L[i-1][0],L[i-1][1]))
                K.append([M[i-1][0]+0.2,M[i-1][1]+0.2])
                G.append([M[i-1],K[i-1]])
                t=show(line(G[i-1],xmin=0,xmax=15,ymin=0,ymax=10),aspect_ratio=1) #il me trace bien les frisbees mais pas sur la meme fenetre
        return(t)
    
    frisbeeeuler(14,1,0,300,4500,0.175,pi/10,pi/6,0.5)
    Y aurait-il un moyen de réunir tous les graphiques ? Ou y aurait-il un autre moyen pour remplacer les points de ma courbe par un segment oblique du type / ?
    Merci d'avance pour votre aide !!
    Images attachées Images attachées     

  2. #2
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Par défaut
    Hello,

    Sage... l'ERP ? Il y a un forum dédié SAGE, peut-être que tu obtiendras plus de réponses là-bas. Le forum "Langages de programmation" concerne les questions pas spécifiques à un langage, les paradigmes de programmation, les choix de langage, etc.

    Ou si ce n'est pas ça, le forum Autres Langages.

Discussions similaires

  1. Selectionner des points parmis une liste pour faire un graphique.
    Par bertrand125 dans le forum Mathématiques
    Réponses: 0
    Dernier message: 10/03/2014, 07h23
  2. Décalage des champs à l'écriture de deux sources dans un même fichier .csv
    Par justinedr71 dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 27/07/2011, 18h09
  3. remplir des tables a partir de fichiers TXT
    Par jeremie dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/03/2004, 14h50
  4. Réponses: 3
    Dernier message: 18/05/2003, 00h16
  5. creer des decors a partir d'un fichier
    Par NICKO dans le forum DirectX
    Réponses: 2
    Dernier message: 21/09/2002, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo