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

Algorithmes et structures de données Discussion :

Rotation rectangle => déformation


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut Rotation rectangle => déformation
    Bonjour,

    Alors voilà, je dispose d'un point avec des coordonnées GPS (donc couple latitude/longitude x0,y0) et d'un angle ($angle).
    A partir du point je dessine un rectangle en calculant les coordonnées des 4 sommets. Puis j'applique une rotation pour chaque sommet avec l'angle et autour de mon point de départ qui se trouve être le centre du rectangle. Donc en clair je fais pivoter le rectangle sur lui même. Mon souci c'est qu'il se déforme durant la rotation (les coins ne sont plus à angle droit). Si j'applique une rotation de 90° il retrouve ses angles droits.

    Voici les formules que j'utilise pour appliquer la rotation sur les coordonnées des sommets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $new_x = $x0 + ($x - $x0) * cos($angle) - ($y - $y0) * sin($angle)
    $new_y = $y0 + ($x - $x0) * sin($angle) + ($y - $y0) * cos($angle)
    J'ai fait une boulette dans ces formules ?

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par spin0us Voir le message
    Voici les formules que j'utilise pour appliquer la rotation sur les coordonnées des sommets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $new_x = $x0 + ($x - $x0) * cos($angle) - ($y - $y0) * sin($angle)
    $new_y = $y0 + ($x - $x0) * sin($angle) + ($y - $y0) * cos($angle)
    J'ai fait une boulette dans ces formules ?
    Ne serait-ce pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $new_x = $x0 + d_coin * cos($angle + $angle_coin)
    $new_y = $y0 + d_coin * sin($angle+ $angle_coin)
    ou d_coint et angle_coin sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d_coin = sqrt(($x_coin-$x)²+($y_coin-$y)²)
    angle_coin = arctan(($x_coin-$x) / ($y_coin-$y))

  3. #3
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    Je t'avouerai que ce genre de manip date un peu pour moi. Donc c'est possible, je vais tester de suite.

    EDIT: semblerait que ce soit pire. Ce coup ci mon rectangle n'est plus qu'une simple ligne

    Avant modification


    Après modification


    La pin représente le centre du rectangle d'origine qui sert de centre de rotation.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Bonjour,

    a priori les formules de ton premier post sont correctes. Es-tu sur que ton rectangle initial est bien un rectangle? que le centre que tu prends en compte est précisément au centre de ton rectangle?

    L'affichage, tu le fais avec un repère cartésien classique?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par spin0us Voir le message
    J'ai fait une boulette dans ces formules ?
    La formule me semble bonne. Par contre, le concept de faire une rotation sur des coordonnées Latitude/Longitude me parait curieux. Ce n'est pas vraiment un repère cartésien orthonormé.


    Edit: croisement de post avec magelan. désolé.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    Pour créer le rectangle je pars du point central et j'ajoute/retranche une certaine valeur fixe pour déterminé les 4 coins du rectangle.
    Après pour l'histoire du repère cartésien orthonormé, sur une si petite distance (200m) en général tu peux considérer la terre comme plate, donc les coordonnées (2 nombres à virgules) c'est tout comme.

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par spin0us Voir le message
    Pour créer le rectangle je pars du point central et j'ajoute/retranche une certaine valeur fixe pour déterminé les 4 coins du rectangle.
    Après pour l'histoire du repère cartésien orthonormé, sur une si petite distance (200m) en général tu peux considérer la terre comme plate, donc les coordonnées (2 nombres à virgules) c'est tout comme.
    Bon, bah il ya de la magie quelque part parce que visiblement tu n'as pas une isométrie.

    Essayes avec un angle de 45°, et donne nous les valeurs que tu obtiens (x,y,x0,y0,new_x,new_y)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Essayes avec un angle de 45°, et donne nous les valeurs que tu obtiens (x,y,x0,y0,new_x,new_y)
    x=45.81441
    y=5.9971
    x0=45.81699
    y0=5.99751
    new_x=45.8154555783
    new_y=5.99539575072

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Quels sont les coordonnées des 3 autres sommets de ton rectangle initial? as-tu fais des arrondis?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par spin0us Voir le message
    x=45.81441
    y=5.9971
    x0=45.81699
    y0=5.99751
    new_x=45.8154555783
    new_y=5.99539575072
    visiblement les coins et le centre sont très proches l'un de l'autre. Les valeurs x/new_x ne diffèrent que de 0.001. Je me demande s'il n'y a pas des erreurs d'arrondis lors du calcul.

    Essaye d'éloigner les coins d'un facteur 1000, puis de rediviser par 1000 une fois le calcul effectué. Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $factor = 1000
    $rx  = $factor*($x - $x0)
    $ry  = $factor*($y - $y0)
     
    $new_x = $x0 + ( $rx * cos($angle) - $ry * sin($angle) ) / $factor
    $new_y = $y0 + ( $rx * sin($angle) + $ry * cos($angle) ) / $factor
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. rotation rectangle cercle
    Par demss dans le forum Mathématiques
    Réponses: 9
    Dernier message: 11/02/2008, 03h58
  2. [vb6] Rotation d'un rectangle
    Par Asdorve dans le forum Vos contributions VB6
    Réponses: 106
    Dernier message: 05/07/2006, 11h06
  3. Rotation rectangle
    Par bonjour69 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 25/04/2006, 19h21
  4. Rotation d'un rectangle
    Par erwan.bodere dans le forum SDL
    Réponses: 4
    Dernier message: 02/12/2005, 21h19
  5. Rotation d'un rectangle autour du centre de gravité
    Par bucheron dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 22/06/2004, 11h01

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