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

JavaScript Discussion :

Calcul de rotation


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut Calcul de rotation
    Bonjour à tous,

    En fait mon problème serait plus d'ordre mathématique,





    Uploaded with ImageShack.us

    Je cherche une formule pour quelque soit le degré appliquer à la rotation du rectangle en son centre je retrouve les coordonnée x2,y2 d'origine (c'est à dire à degré 0 (soit le point A)) à partir des coordonnées (x,y) ayant subit la rotation d'angle alpha. .



    Par exemple soit mon point A1 (x=456,y=290), j'applique une rotation en son centre de 10 degré les coordonnés de A passe à A2 (X=455,Y=305), je cherche la formule pour me redonner les coordonnée d'origine A1 (x=456,y=290) à partir de A2 (X=455,Y=305).


    ou encore :

    Angle 0 (x,y)
    (456,293)

    Angle 10 (x,y)
    (454,303)

    Angle 20 (x,y)
    (454,312)


    Angle 70
    (x,y)
    (477,352)






    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    encore un exercice de trigo ...
    Faut pas juste recopier l'énoncé ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    oui, c'est un problème de trigo, mais pas un énoncé je développe en jquery un module pour placer des calques sur une image et je bloque sur un problème lors de la rotation...
    maintenant si personne ne veut m'aider tant pis...merci quand meme
    Pour information voici mon code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    radian=degree*(Math.PI/180);
    y2=	( $("input:#x_"+itemid).val() * Math.cos(radian) - $("input:#y_"+itemid).val() * Math.sin(radian) );				
    x2=( $("input:#x_"+itemid).val() * Math.sin(radian) + $("input:#y_"+itemid).val() * Math.cos(radian) ) ;
     
     
     
    console.log('--x--'+  $("input:#x_"+itemid).val());
    console.log('--y--'+$("input:#y_"+itemid).val());
     
    console.log('--x2--'+  x2);
    console.log('--y2--'+y2);

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Par défaut
    La matrice de rotation en 2D est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x2 = (cos(a) * x1)(sin(a) * y1) 
    y2 = (sin(a) * x1) + (cos(a) * y1)
    Donc dans ta transformation de point tu semble inverser les coordonnées!

    Par exemple soit mon point A1 (x=456,y=290), j'applique une rotation en son centre de 10 degré les coordonnés de A passe à A2 (X=455,Y=305)
    Par contre tes valeurs attendues ne semblent pas juste, d’où les sors-tu ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A1 = {456, 290}
    A2 = { cos(10) * 456sin(10) *290 ,  sin(10) *456 + cos(10) *290 } = { 398.71, 364.77}
    La rotation d’un point s’effectue toujours par rapport au point {0, 0}, le centre du repère.
    mais peut-être cherche tu a réorienter ce point par rapport un point de pivot ?

  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    oui, comme le dit p3ga5e, il manque une donnée dans ton énoncé : le rayon de l'image (ou les coordonnées du centre de celle-ci).

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    Merci de votre aide,exactement j'ai également les coordonnée du centre à prendre en compte !
    Car le point d'origine n'est pas à (0,0).
    En fait je cherche à retrouver les coordonnées du point d'origine à partir des coordonnées d 'un point.

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Par défaut
    Je ne cible pas vraiment ton problème.
    Mais une chose est sur, En infographie l’utilisation de Matrices et Vecteurs est inévitable.
    Une Matrice 3x3 te permet d’effectuer une transformation 2d ( Rotation, translation et scale ) d’un point 3x1 ( coordonnée homogène [ x, y , 1] ), te permettant ainsi, d’exprimer un point par rapport a un nouveau repère par un simple produit matriciel :
    En calculant la matrice inverse il possible de retrouver ton point d’origine, ou du moins t’en approcher (problème de précision sur les virgules flottante):
    Voila pour la théorie, mais en pratique, la plupart des moteurs de rendu vectoriel, utilisent un arbre, ou chaque nœud contient un changement de repère sous la forme d’une matrice local, les points doivent être exprimé dans un repère local, et c’est le repère que l’on oriente.

    Le moteur de rendu vectoriel se charge de parcourir cet arbre en profondeur en multipliant toutes les matrices locales à chaque nœud et effectuant lui-même les transformations sur tes sommets. Enfin, exception faite, de WebGL ou tu dois te coder ce parcourt d’arbre pour multiplier les matrices en javascript et écrire un shader pour la transformation des points.

Discussions similaires

  1. calculer les rotations à partir du vecteur direction
    Par dvince38 dans le forum Moteurs 3D
    Réponses: 3
    Dernier message: 04/07/2010, 04h48
  2. Interpolation d'Hermite pour calcul de rotation
    Par Blash dans le forum Mathématiques
    Réponses: 2
    Dernier message: 05/12/2009, 12h15
  3. Comment faire des calculs de Rotation avec Ogre
    Par Rumpel dans le forum Ogre
    Réponses: 0
    Dernier message: 22/07/2009, 18h15
  4. calculs mathematiques : rotation camera
    Par zax-tfh dans le forum OpenGL
    Réponses: 8
    Dernier message: 09/01/2006, 13h20
  5. calcul de rotation de coordonées
    Par ahoyeau dans le forum OpenGL
    Réponses: 10
    Dernier message: 05/03/2004, 14h17

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