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 :

turtle Python centrer les ovales


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : janvier 2012
    Messages : 147
    Points : 85
    Points
    85
    Par défaut turtle Python centrer les ovales
    bonjour,
    je n'ai pas trouvé sur le net de tuto pour positionner un ovale par son centre sur turtle,
    donc je me suis résolu à créer (bien modestement) une petite fonction qui le fait en faisant appel à mes bases de trigonométrie.
    Si ca peut dépanner des débutants je vous en fait profiter et je le partage ci dessous, c'est très pratique pour dessiner par exemple des visages (on positionne les 2 yeux à leur place facilement par leur centre).
    ca fonctionne pour des ovales courantes, c'est à dire :
    - à 2 rayons (n'importe lesquels)
    - verticales, horizontales ou à 45 degrés montant ou descendant
    - raccord entre les 2 rayons sur un angle de 45°
    ce n'est donc pas universel, mais ca dépanne bien et c'est super facile d'emploi
    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
     
    from turtle import *
    def draw_oval(x,y,long_radius,short_radius,tilt):
        #tilt 90=> portrait départ Sud-Est
        #tilt 0 => paysage départ Sud-Ouest
        #tilt 45=> montante départ Sud
        #tilt 135=> descendante départ Est
        up()
        #si vertical
        if tilt==90: #tilt 90=> portrait départ Sud-Est
            depart_x = (long_radius-short_radius)/1.4142
            depart_y = (long_radius-short_radius)/1.4142*2
        elif tilt==0:#tilt 0 => paysage départ Sud-Ouest
            depart_x = -((long_radius-short_radius)/1.4142+short_radius/1.4142)
            depart_y = short_radius/1.4142
        elif tilt==45: #tilt 45=> montante départ Sud   
            depart_x = -((long_radius-short_radius)/2)
            depart_y = (long_radius-((long_radius-short_radius)/2))
        elif tilt==135:#tilt 135=> descendante départ Est
            depart_x = (long_radius-((long_radius-short_radius)/2))
            depart_y = ((long_radius-short_radius)/2)
        else:
            depart_x=0 # juste pour eviter une erreur si angle différent
            depart_y=0 # de ceux prévus(0,45,90,135)
        goto(depart_x,-depart_y)
        down()
        seth(-45+tilt)
        color('red')
        circle(long_radius,90)
        color('blue')
        circle(short_radius,90)
        color('yellow')
        circle(long_radius,90)
        color('green')
        circle(short_radius,90)
     
    draw_oval(0,0,100,50,90)#portrait
    draw_oval(0,0,100,30,0)#paysage
    draw_oval(0,0,60,30,45) #montante
    draw_oval(0,0,60,30,135) #descendante
    #draw_oval(0,0,100,50,22)#angle non prévu => fera demarrer le tracé au centre de la fenetre
    c'est ma première contribution, j'espère que ce sera utile à quelqu'un ;o))
    Amicalement
    Lucky

  2. #2
    Membre régulier
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : janvier 2012
    Messages : 147
    Points : 85
    Points
    85
    Par défaut
    hello tous,
    je me rend bien compte que j'ai un peu fait une usine à gaz qui ne sert pas à grand chose.
    il y a bien shape("circle") avec 2 paramètres length et width différents qui font un ovale centré mais il n'est pas joli car le contour est fait de successions de droites, dès que le shape est grand c'est très moche.
    mon post n'a d'utilité que dans les cas de position angulaires multiples de 45.
    je suis débutant, alors si quelqu'un a une solution universelle (quelle que soit l'inclinaison 1° 10°, 22°, etc...) ca pourrait être utile, n'hésitez pas !
    merci
    Lucky

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 18 885
    Points : 32 604
    Points
    32 604
    Par défaut
    Salut,

    Citation Envoyé par luckyalan Voir le message
    je suis débutant, alors si quelqu'un a une solution universelle (quelle que soit l'inclinaison 1° 10°, 22°, etc...) ca pourrait être utile, n'hésitez pas !
    Les tracés de la Tortue se font dans un Canvas tkinter qui a une fonction .create_oval dont vous pourriez tirer profit.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Centrer les icones d'une liste
    Par vanitom dans le forum Visual C++
    Réponses: 1
    Dernier message: 18/08/2006, 12h54
  2. Centrer les composants d'un JPanel
    Par Linaa dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 11/06/2006, 18h53
  3. [SWT] centrer les composants dans une vue
    Par LoloBebop dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 07/06/2006, 11h34
  4. [CSS] Centrer les éléments ou un site web
    Par pp51 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 27/12/2005, 16h24
  5. [JTable] centrer les donnees dans les cellules
    Par cmoa59 dans le forum Composants
    Réponses: 5
    Dernier message: 20/05/2005, 12h35

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