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 :

Rotation d'objet autour d'un point


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 12
    Par défaut Rotation d'objet autour d'un point
    Bonjour à tous,

    Dans le cadre d'un projet je dois créer un programme permettant de générer des Mandalas en fonction de formes géométriques dessinées au préalable. J'en suis à la toute fin de mon projet et me retrouve coincé au niveau de la rotation des items. En effet, dans un canevas, je vais dessiner un trait suivant les coordonnéesx0,y0,x1,y1) = (0,0,50,50) par exemple. Maintenant je décide de réaliser des rotations de cet objet suivant les valeurs de Xpi/2 pour X allant de 1 à 4 autour du point (100,100). Suite à cela l'intégralité des dessins resterons sur le canevas. En bref, à ce moment, sur mon canevas je dois voir 4 traits symétriques autour du fameux point (100,100), mon centre de symétrie. Accessoirement, je cherche à faire en sorte que les rotations fonctionnent sur l'ensemble des dessins dans le canvas.
    Si j'ai été clair et que tout le monde me comprend, quelqu'un peut-il m'aider d'une part sur la formule à utiliser et d'autre part sur l'algorithme?
    J'ai eu beau faire plein d recherche et tester de nombreuses formule je n'arrive jamais au résultat escompté.

    Merci infiniment

  2. #2
    Membre émérite
    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
    Par défaut
    Bonsoir,
    Il me semble que les rotations sont assez facilement exprimées.
    Sur wikipedia… Rotation plane et plus précisément la partie "Formules de changement d'axes de coordonnées" qui donne toutes les clefs de la conversion…
    Après le travail mathématique, l'expression du code vient sans doutes relativement facilement (avec les fonctions trigonométriques du module "math").

    Non?

    Clodion

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 12
    Par défaut
    Cet article sur wikipedia je l'ai lu plus d'une fois, et sans en comprendre la raison le résultat n'est pas bon.. Du coup j'ai fais pas mal d'autres recherches et testé quelques hypothèse mais non rien à faire. Je me sers effectivement du module math.
    Je te remercie pour ta réponse

  4. #4
    Membre émérite
    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
    Par défaut
    Bonsoir,
    La première étape est de réaliser un changement de repère (par translation simple) afin que le centre de rotation devienne l'origine de ce nouveau repère. C'est à dire que dans ce nouveau repère, les coordonnées du centre de rotation soient (0;0).

    Cela est normalement facilement réalisable dans une fonction.

    La deuxième étape est de réaliser la rotation proprement dite. C'est là que les "formules" données par wikipedia sont utiles!! Elles permettent d'obtenir, à partir des coordonnées des points de départ, les coordonnées des points après rotations. Ceci est à réaliser pour chaque points remarquable de la figure (ie: les quatre coins d'un carré ou le centre d'un cercle).

    Avec ces nouvelles coordonnées des points ayant subi la rotation, il suffit de réaliser un nouveau changement de repère afin d'exprimer les coordonnées de ces points dans le repère initial.

    Non?

    Clodion

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 12
    Par défaut
    Merci, je vais essayer de ce pas. Pensez-vous qu'il est possible de réaliser cela pour chaque élément présent dans le canvas? Si par exemple je dessine deux lignes et un rectangle, je souhaite tout récupérer pour modifier chaque coordonnée de chaque item et retourner ces mêmes items victime maintenant d'une ou plusieurs rotation.

  6. #6
    Membre émérite
    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
    Par défaut
    Citation Envoyé par epok33 Voir le message
    Pensez-vous qu'il est possible de réaliser cela pour chaque élément présent dans le canvas? Si par exemple je dessine deux lignes et un rectangle, je souhaite tout récupérer pour modifier chaque coordonnée de chaque item et retourner ces mêmes items victime maintenant d'une ou plusieurs rotation.
    Bonsoir,
    Mathématiquement il n'y a aucun problème pour réaliser les rotations de n'importe quelle forme.
    Le seul problème viendra ensuite de l'expression des nouvelles coordonnées avec tkinter. Il faudra ainsi convertir ces coordonnées afin de réaliser les changements de coordonnées dans tkinter.
    Ainsi, pour une ligne, à partir des deux points ayant subi la rotation il est simple de redéfinir la position de la nouvelle droite.
    Pour un rectangle, l'opération est plus délicate car tkinter ne permet pas (à ma connaissance) de dessiner des rectangles avec rotation. Il sera alors nécessaire de les dessiner par des "polygons" afin de pouvoir retracer chacun des cotés après rotation.

    Clodion

Discussions similaires

  1. [XNA] Rotation d'un sprite autour d'un point
    Par DotNET74 dans le forum Windows Phone
    Réponses: 4
    Dernier message: 20/10/2011, 09h21
  2. Rotation GluLookAt autour d'un point central
    Par Dross dans le forum C++
    Réponses: 5
    Dernier message: 11/07/2011, 11h05
  3. Rotation de 2 objets autour d'un axe
    Par dimainfo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 19/05/2009, 19h15
  4. Rotation caméra autour d'un point fixe
    Par jbeaussier dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/01/2008, 00h16
  5. Rotation autour d'un point
    Par Webhellfire dans le forum OpenGL
    Réponses: 1
    Dernier message: 10/01/2006, 18h21

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