Rotation d'un objet 2d

cs_azkab Messages postés 22 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 juin 2004 - 25 mai 2004 à 09:22
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004 - 26 mai 2004 à 13:08
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

shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
25 mai 2004 à 17:10
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
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 mai 2004 à 20:29
: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)));
...
0
cs_azkab Messages postés 22 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 juin 2004
26 mai 2004 à 03:21
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);)
0
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
26 mai 2004 à 12:25
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
26 mai 2004 à 13:08
euh c'est le résultat de (mat_transform[][]*pts_init[][]) que tu dois caster!

@+
SHIRAH
0
Rejoignez-nous