Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: problème de rotation  (Lu 2453 fois)

0 Membres et 1 Invité sur ce sujet

paulop33

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
problème de rotation
« le: Mai 28, 2012, 05:15:43 pm »
Bonjour tout le monde.
Je viens de créer un compteur (comme dans les voitures) qui fonctionne uniquement au bord de l'écran: quand je décale ce compteur la rotation est toujours bonne mais l'aiguille est décalée, environ 100px au dessus du centre. Mon problème est sans doute bête.

voici mon code qui fonctionne
    _compteur_sprite.SetPosition(0,_h-147);
    _aiguille_sprite.SetCenter(137,h-22);

    if(ratioPoint180!=_ratioPoint)
    {
        _aiguille_sprite.Rotate(-((score*180)/scoreMax-_ratioPoint));
        _ratioPoint=ratioPoint180;
    }
    _aiguille_sprite.SetPosition(137,_h-22);

    _window->Draw(_compteur_sprite);
    _window->Draw(_aiguille_sprite);

et le code qui ne fonctionne pas:
    _compteur_sprite.SetPosition(100,_h-147);
    _aiguille_sprite.SetCenter(237,h-22);

    if(ratioPoint180!=_ratioPoint)
    {
        _aiguille_sprite.Rotate(-((score*180)/scoreMax-_ratioPoint));
        _ratioPoint=ratioPoint180;
    }
    _aiguille_sprite.SetPosition(237,_h-22);

    _window->Draw(_compteur_sprite);
    _window->Draw(_aiguille_sprite);

D'où vient mon erreur? merci d'avance

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de rotation
« Réponse #1 le: Mai 28, 2012, 06:41:51 pm »
N'oublie pas que le centre (SetCenter) est également le centre de translation, pas uniquement de rotation.
Laurent Gomila - SFML developer

paulop33

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : problème de rotation
« Réponse #2 le: Mai 28, 2012, 07:09:06 pm »
Je suis d'accord.
Mais je vois pas comment le modifier.
J'ai tenté de remettre le centre à(0,0) après la rotation mais ça fait tourner mon aiguille à l'envers.
Un coup de pouce?
« Modifié: Mai 28, 2012, 07:12:13 pm par paulop33 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : problème de rotation
« Réponse #3 le: Mai 28, 2012, 07:19:55 pm »
Les transformations ne s'appliquent pas à la volée, elles ne sont combinées qu'au moment du dessin. Si tu appelles SetCenter(x, y) puis SetCenter(0, 0) alors ça n'aura aucun effet, peu importe que tu fais entre les deux.

La seule solution est d'adapter les translations au centre.
Laurent Gomila - SFML developer

paulop33

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : problème de rotation
« Réponse #4 le: Mai 28, 2012, 07:42:34 pm »
merci beaucoup Laurent !