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

Python Discussion :

Etoile ou polygone sur python


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut Etoile ou polygone sur python
    Bonjour à tous
    Voila je dois créer une fonction qui peut dessiner une etoile avec n branche
    mais je n'y arrive pas
    voila ce que j'avais commencer à faire en utilisant turtle import bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def  etoile (taille, coté)
      for x in range (cote)
        forward (taille)
        right (180 / (180/float(cote)))
    Cette ne fonctionne pas pour tous par exemple pour un décagramme ca ne marche pas d'une part et d'autre il y a certain polygramme qui ne sont pas réalisable comme l'hexagramme
    je dois utiliser des conditions ? mais je vous avouerai je suis perdu
    merci de m'aider

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Voici un exemple avec Tkinter
    Code python : 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
    # -*- coding: utf-8 -*-
    """Tracé de polygones étoilés
        avec le module Tkinter
    """
     
    import Tkinter #le module graphique
    import math #module mathématique
     
    """paramètres du graphique"""
    Width=300 #largeur de la fenêtre en pixels
    Height=300 #hauteur de la fenêtre en pixels
    Unit=15 #taille en pixels du vecteur unité
    Midx=Width/2 #abscisse du centre du graphique
    Midy=Height/2 #ordonnée du centre du graphique
    racine=Tkinter.Tk() # la fenêtre de l'application
    racine.title("Exemple de représentations graphiques")
    fond=Tkinter.Canvas(racine, width=Width, height=Height, background='black')#aire de dessin
     
    def convert(x,y):
        """calcule les coordonnées en pixels sur l'image du point de coordonnées x, y réels"""
        m=int (x*Unit)+Midx
        n=Midy-int(y*Unit)
        return m,n
     
    def packall(): #initialisation des composants
        fond.pack()
     
     
    def Polxy(n):
        """Sommets du polygone régulier"""
        return [(9*math.cos(2*k*math.pi/n),9*math.sin(2*k*math.pi/n)) for k in xrange(0,n)]
     
    def Star(n):
        """Tracé polygone étoilé"""
        if(n%2):
            StarImpair(n)
        else:
            StarPair(n)
     
     
    def StarImpair(n):
        """ cas impair"""
        P=Polxy(n)
        Q=[convert(x,y) for (x,y) in P]
        for i in xrange(0,2*n,2):
            fond.create_line(Q[i%n][0],Q[i%n][1],Q[(i+2)%n][0],Q[(i+2)%n][1],fill="red")    
     
     
    def StarPair(n):
        """cas pair"""
        P=Polxy(n)
        Q=[convert(x,y) for (x,y) in P]
        for i in xrange(0,n,2):
            fond.create_line(Q[i][0],Q[i][1],Q[(i+2)%n][0],Q[(i+2)%n][1],fill="white")
        for i in xrange(1,n,2):
            fond.create_line(Q[i][0],Q[i][1],Q[(i+2)%n][0],Q[(i+2)%n][1],fill="white")        
     
    def main():
        """fonction principale"""
        packall()#disposition des composants
        Star(5)
        Star(6)
     
        racine.mainloop()#boucle de traitement des évènements souris-clavier
     
    main()
    Images attachées Images attachées  
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut
    Merci pour ton aide mais je t'avouerai que ca me parait complexe
    dans l'exo nous prendons pas en compte les polygramme suivant

    ou encore

    ceux qu'on fait deux partie
    On dira que cela n'est pas possible dans notre fonction
    on m'a dit de rentrer ces conditions dans ma fonction
    il s'agit de diviser 360 par le nombre n de branches, puis de le multiplier par un nombre m plus grand que 1 mais plus petit que n/2 qui ne soit pas un diviseur de n
    Merci pour ton aide en tout cas

Discussions similaires

  1. Application reseau de neurone sur python!
    Par tnouss dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 15/04/2007, 20h18
  2. Boucles sur python
    Par Spitfire378 dans le forum Général Python
    Réponses: 10
    Dernier message: 08/04/2007, 20h46
  3. Comment obtenir une adresse mac sur python
    Par Wael Maaoui dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 19/02/2007, 13h52
  4. dessiner un polygone sur une photo
    Par barbare_krater dans le forum Graphisme
    Réponses: 4
    Dernier message: 18/06/2006, 14h37

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