Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: paulop33 le Mai 28, 2012, 05:15:43 pm

Titre: problème de rotation
Posté par: paulop33 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
Titre: Re : problème de rotation
Posté par: Laurent 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.
Titre: Re : problème de rotation
Posté par: paulop33 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?
Titre: Re : problème de rotation
Posté par: Laurent 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.
Titre: Re : problème de rotation
Posté par: paulop33 le Mai 28, 2012, 07:42:34 pm
merci beaucoup Laurent !