Rotation d'un objet 2d

Signaler
Messages postés
22
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 juin 2004
-
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004
-
bonjour,
bon j ai un probleme avec mon programme, j ai passé des heures la dessus mais en vain.
dans mon programme je cree un rectangle et je desire effectuer une rotation de Phi=45 degres (0.78 en radian) la dessus. donc, pour chaque point de rectangle je fais cela :
mettant un point avec les coordonés x et y
x1 et y1 etant la nouvelle position

int x1= (int)(x*cos(Phi)-y*sin(Phi));
int y1= (int)(x*sin(Phi)+y*cos(Phi));

1-est-ce que c'est la bonne methode pour pivoter un objet?
2-si oui est ce ke klk un pourrait m aider a resoudre mon prob?

merci d'avance.
return(0);)

5 réponses

Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

Salut!

(1) Oui c'est la bonne méthode pour faire pivoter un objet.
(2) Je te conseille de mettre tes x et tes y en float ou en double ca devrait aller un peu mieux avec des sin et des cos.

@+
SHIRAH
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
:o man cos,sin arg doit etre en rad, pas en deg!

const double PI=3.1415926;

int x1= (int)(x*cos(Phi*(PI/180))-y*sin(Phi*(PI/180)));
...
Messages postés
22
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 juin 2004

bonjour tt le monde,
d abord merci pour vos reponses.
shirah-» ce que j arrive pa a comprendre c comment utiliser des float ou meme des doubles en sachant ke je dois avoir des corrdonnées (entiers) genre (1,6),(4,98) etc. le casting va me faire perdre de la precision et les float je peux pas les utiliser parceke je dois inserer des points dans differentes matrices (cartes). comment devrais je faire?
djl-» je mettais la valeur de l'agle en radian (0.78)

en 2k je v creuser encore ce soire et je vous tienderais des nouvelles :)
si vous avez des suggestions ca sera la bienvenue ;)
merci 876876687687687 fois.

return(0);)
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

Si tes transformations s'appliquent à l'ensemble de tes points, tu peux essayer de faire tes opérations sur les matrices de transformation (rotation, translation...).
Le résultat de tes transformations te donne une matrice mat_transform[][] dont les valeurs seront en double ou en float (a cause des sin, cos).
Après tu fais un cast sur le résultat de (pts_init[][]*mat_transform[][]) comme ca tu fais moins de calculs, et tu perds un peu moins en précision puisque tu fais ton cast uniquement à la fin.
En plus comme ca tu peux aussi insérer tes coordonnées dans d'autres matrices avec le cast dont tu as besoin!

SHIRAH
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

euh c'est le résultat de (mat_transform[][]*pts_init[][]) que tu dois caster!

@+
SHIRAH