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

Tkinter Python Discussion :

Probleme courbe fonction Tkinter !


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Probleme courbe fonction Tkinter !
    Bonjour à tous ! J'ai un petit soucis j'aimerai avoir une courbe représentant f(x) pour un programme qui simule la trajectoire d'un boulet de canon, c'est à dire notre fonction en fonction de l'abscisse et que pour ce faire on utilise uniquement Tkinter !

    En fait de la manière suivante en créeant une boucle qui : crée un point de coordonnées (x;f(x)) puis un point de coordonnées (x+1;f(x+1)), on crée le segment les reliant, et après x=x+1, on s'arrête quand la courbe arrive sur l'axe des abscisses. Et la je n'obtiens qu'un trait droit ... En espérant obtenir de l'aide merci !

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    from math import *
    from tkinter import *
    #u=float(input("o="))
    #o=float((u*pi)/180)
     
    # Choix du canon :
     
    def canon1():
     
        global k
        global v
        global m
        v=500
        m=5.4
        k=0.19333
        return(v, m, k)
     
    def canon2():
        global k
        global v
        global m
        v=1100
        m=10.4
        k=0.53584
        return(v, m, k)
     
    def canon3():
        global k
        global v
        global m
        v=333
        m=800
        k=5.252
        return(v, m, k)
     
     
    #Equation de la trajectoire :
    #On obtient la hauteur y en fonction de l'abcisse x (et de la vitesse et de l'angle.)
     
     
    def y(x):
        o=float((45*pi)/180)
        v=500
        m=5.4
        k=0.19333
        h=k/m
        return((9.81/(h*v*cos(o))+tan(o))*x+9.81/(h*h)*log(1-h*x/(v*cos(o))))
     
    def xmax():
        x=50
        while y(x)>20:
            x=x+1
        return("Portée :", x,"m")
     
    def ymax():
        x=1
        while y(x)<y(x+1):
            x=x+1
        return("la hauteur maximal se trouve à ",x,"m et est de ",y(x),"m")
     
    def tki():
        coordx=[0]
        coordy=[0]
        x=1
        while x<5000:
            coordx.append(x)
            coordy.append(y(x))
            repere.create_line(coordx[x-1],coordy[x-1],coordx[x],coordy[x])
            x=x+1
     
    #Tkinter
    fen=Tk()
    repere=Canvas(fen,width=600,height=500)
    repere.pack()
     
    b=Button(text="Test",command=tki)
    b.pack()
     
    fen.mainloop()

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Personne pour m'aider, svp ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par qlathaud Voir le message
    Personne pour m'aider, svp ?
    Bonjour,
    Le code est abscons pour moi.
    De ce que j'en ai compris, c'est simplement la fonction "y(x)" qui pose problème…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def y(x):
        o=float((45*pi)/180)
        v=500
        m=5.4
        k=0.19333
        h=k/m
        return((9.81/(h*v*cos(o))+tan(o))*x+9.81/(h*h)*log(1-h*x/(v*cos(o))))
    En supprimant les calculs inutiles…
    return k*x+n*log(1-x/m)

    M'ouais, il y a quand même une bonne composante linéaire (désolé, la flemme de faire les calculs).
    Clodion

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Problème identifié, notre fonction est bonne, la représentation graphique aussi mais Tkinter n'offre pas une fenêtre assez large pour afficher le graphe en entier. Cette ligne droite que l'on voit n'est autre que le début de notre fonction,
    Alors la auriez vous une idée de comment dézoomer, ou la visualiser en entier ? Preuve en image en l'ayant modélisé avec la calculatrice :
    Nom : 11245423_902087403182626_586019744_n.jpg
Affichages : 167
Taille : 19,4 KoNom : 11251443_902089639849069_1328174276_n.jpg
Affichages : 180
Taille : 18,2 Ko

  5. #5
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par qlathaud Voir le message
    Problème identifié, notre fonction est bonne, la représentation graphique aussi mais Tkinter n'offre pas une fenêtre assez large pour afficher le graphe en entier. Cette ligne droite que l'on voit n'est autre que le début de notre fonction,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    repere=Canvas(fen,width=600,height=500)
    Bonjour,
    Vous êtes certains?
    Bien sûr, dépassé quelques millions de pixels, l'écran devient un peu "juste"… Mais peut-être qu'en réfléchissant il y a des possibilités de rendre les choses plus compatibles.


    Clodion

Discussions similaires

  1. probleme de fonction javascript
    Par cach dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/07/2005, 10h34
  2. Réponses: 17
    Dernier message: 24/03/2005, 12h24
  3. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  4. [VB6]Problème de fonction
    Par mustang-ffw02 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/03/2004, 15h09
  5. Probleme de fonction
    Par yenna dans le forum ASP
    Réponses: 6
    Dernier message: 01/03/2004, 14h10

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