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

C# Discussion :

Rotation d'un point


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 156
    Par défaut Rotation d'un point
    Salut,
    je voudrais savoir comment calculer les coordonées d'un point A(x;y) ayant subi un rotation d'angle alpha° avec comme centre de rotation un autre point nommé B(x';y');



    J'utilise System.Drawing.Point pour mon implémentation du point.

    Merci d'avance!!

    ps:j'ai pas trouvé de source convenable sur le net, si vous avez un lien ce sera amplement suffisant.

  2. #2
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    c'est pas plutot un problème de trigonométrie ?
    http://fr.wikipedia.org/wiki/Cercle

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 156
    Par défaut
    Heu, qu'entends tu par "trigonométrie" ? C'est un plus probleme de math que de programmation, c'est sur.


    Je pense que mon post est assez clair de toute facon je peux pas faire plus simple.

    Mais peut etre aurais-je plus de chance dans le forum 2d-3d jeux?

  4. #4
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    http://fr.wikipedia.org/wiki/Trigonom%C3%A9trie

    sinon oui cela n'a rien à voir avec du C# le forum 2D - 3 D jeux serait plus approprié

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 156
    Par défaut
    Ouais je vais poster dans le forum 2d-3d jeux .
    Sinon pour répondre à ta question ce n'est pas un probleme de trigo.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par clemsye Voir le message
    Ouais je vais poster dans le forum 2d-3d jeux .
    Sinon pour répondre à ta question ce n'est pas un probleme de trigo.
    Ben si c'est juste une question basique de trigo plane avec une transfo de coordonnée.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut Réponses !
    Citation Envoyé par clemsye Voir le message
    Salut,
    je voudrais savoir comment calculer les coordonées d'un point A(x;y) ayant subi un rotation d'angle alpha° avec comme centre de rotation un autre point nommé B(x';y');
    Il s'agit bien d'un pb de trigo et donc de math, comme ca tout le monde est d'accord

    Voici l'énoncé
    Soit un point A(x1,y1) que tu veux placer en B(x,y) en exécutant une rotation d'un angle téta à partir du centre O(a,b)
    Attention, les angles sont à exprimé en radian, et on mesure un angle dans le sens inverse des aiguilles d'une montre !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    angleRadian = Pi*(angleDegre)/180
    Tu calcules alors le rayon r de ton cercle imaginaire sur lequel tu exécutes ta rotation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      r = racine( carre(x1-a)+carre(Y1-b) )
    Tu calcules aussi, l'angle alpha de ton point A par rapport à l'horizon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      alpha = arccos( (x1-a) / r )
    Tu en déduis alors ton x et y avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      x = a + r.cos(téta+alpha)
      y = b + r.sin(téta+alpha)
    Essaies avec le point A(-1,2 ) sur une rotation de centre O(0,0) sur un angle de pi
    tu dois obtenir alors B(1,-2) (soit les coordonnées inversées)

    Olive

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut et en prime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    static private void Rotation( Point A, Point O, ref Point B, double angleRotation )
    {
    	double r = 0;
    	double angleOrigine = 0;
     
    	r = Math.Sqrt( Math.Pow( A.X - O.X, 2 ) + Math.Pow( A.Y - O.Y, 2 ) );
    	angleOrigine = Math.Acos( (A.X - O.X) / r );
    	B.X = (int) Math.Round( O.X + r*Math.Cos( angleRotation + angleOrigine ), 0 );
    	B.Y = (int) Math.Round( O.Y + r*Math.Sin( angleRotation + angleOrigine ), 0 );
    }
    Oliv.

  9. #9
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    c.f. le programme de TS spé Math : ceci ne fonctionne que si la rotation est de centre O. Sinon, ca complexifie un 'chouilla' !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    Le centre O n'est pas forcément le point (0,0).

    C'est le point que l'on veut et ca marche !

    D'ailleurs, cette formule est tirée des coordonnées polaires d'un cercle de centre quelconque. je t'invite donc à en refaire la démonstration, et puisque le wikipédia était précédemment cité, je suis allé vérifier, tout y est pour refaire la démo !


    Vous avez 10 minutes, ensuite je ramasse les copies

  11. #11
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    ok, je n'avais pas lu en détail désolé, je te fais confiance je pensais que tu avais supposé O = (0,0)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Distance invariante à l'échelle et à la rotation entre 2 points 3D
    Par ghrayri dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 01/06/2014, 10h36
  2. rotation d'un point dans l'espace
    Par ded jay dans le forum C++
    Réponses: 7
    Dernier message: 16/10/2007, 10h46
  3. Coordonnées rotation d'un point
    Par spender dans le forum 2D
    Réponses: 15
    Dernier message: 21/08/2007, 17h40
  4. Calculer la normale grace a trois angles de rotations plus un point.
    Par parp1 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 02/03/2007, 17h34
  5. rotation par rapport à un point
    Par marcololo dans le forum DirectX
    Réponses: 8
    Dernier message: 03/06/2005, 15h36

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