[SDL]Comment faire tourner un objet selon un axe de rotation ?

Signaler
Messages postés
4
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
11 août 2004
-
Messages postés
4
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
11 août 2004
-
Bonjour,
je souhaiterai créer un compteur (de voiture). seulement, je ne sais pas comment faire pour faire tourner l'aiguille...
est-ce que vous auriez une idée ? merci

ps : je développe uniquement sous linux. je vous prierai donc de ne pas faire intervenir des fonctions spécifiques à windows ;)

Webmaster de www.forum-ti.fr.st

7 réponses

Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Salut,
je n'ai aucune notion en C++ mais je peut déjà te donner une solution (sans exemple)
Il faut se servir des Cosinus et Sinus pour tracer ton aiguille.
Déjà il faut convertir ta vitesse en angle.
Si tu veut que sur ton compteur ça aille de 0 à 200, alors tu fait 200/360 et ensuite pour obtenir l'angle, tu calcule Angle = (200/360)*Vitesse.
Bien sur la sur ton compteur le sens sera contraire aux aiguilles d'une montre et il commencera à l'horizontale à droite (si tu me suis toujours). Donc il faut déjà décaler l'endroit de début, donc à ton angle tu lui enlève 90°
Angle=Angle-90°
Puis il faut inverser le sens :
Angle=0-Angle

Ensuite quand tu voudras dessiner ton compteur, il faut dessiner la ligne en utilisant ces coordonées :
X1 = CentreX
Y1 = CentreY
X2 = CentreX + Cos(Angle) * Taille_Aiguille
Y2 = CentreY + Sin(Angle) * Taille_Aiguille
donc tu obtient 2 points que tu relie par une ligne (je répète je ne sais pas faire ;-)
Attention : Si dans la fonction cosinus et sinus il faut envoyer des angles en radians, alors il faut le convertir avant avec :
Angle = Angle * Pi / 180
Pi est environ de 3.1415926 (je connais pas + de décimales de tete).

Il y a encore beaucoup d'améliorations à faire, mais t'inquiète tu y arrivera, par exemple pour que l'aiguille ne parte pas a la verticale, tu peut lui retirer quelques degré :
Angle = Angle - 10

Mais bon tu t'en sortira très bien ;-)
J'espère t'avoir été utile.

@ ++
MadMatt
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
Je pense que tu t's trompé MadM@att :

Pour convertir la vitesse en angle avec un compteur allant de 0 a 200 il faut faire:
(vitesse*360)/200 (produit en croix)

pour le reste c bon mais moi je mettrais des parenthèses pour:

angle=(angle*Pi)/180 pour eviter les ambiguités...
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Autant pour moi...

Si ça vous interesse je suis en train de faire cette source en Visual Basic et elle sera surement sur vbfrance ce soir ou demain, donc si ceux que ça interesse sont près à déchiffrer le VB faites-y un tour.

@ ++
MadMatt
Messages postés
4
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
11 août 2004

ok, j'ai mis en place le calcul des coordonnées selon l'angle.
mais quelqu'un sait-il tracer une ligne ?
ce serait certainnement beaucoup plus simple que de calculer la fonction affine à partir des deux coordonnées puis de tracer point par point.
merci à ceux qui pourront à nouveau m'aider...

Webmaster de www.forum-ti.fr.st
Messages postés
4
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
11 août 2004

tant pis pour la ligne, je fais point par point.
mais j'ai un problème...
pour voir mes sources : trace.c
trace.h
vu.bmp
prog compilé
si vous voulez compiler, il faut tout mettre dans le même répertoire ;)

j'ai un problème avec mon aiguille : elle n'est pas au bon endroit ! dans le prog compilé, je lui demande d'être à 10° mais elle est horizontale !
si quelqu'un peut m'aider...
merci

Webmaster de www.forum-ti.fr.st
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
moi j'arrive pas a telecharger tes sources...se serait possible que tu mettes sur le forum juste l'algorithme de tracé de lignes que tu as fait?

Et pis SDL c'est bien ca que tu utilises? Il doit doit bien y avoir une fonction de tracé de lignes....
Messages postés
4
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
11 août 2004

justement ! il n'y a aucune fonction qui permette de tracer une ligne ! (je ne l'ai pas trouvée du moins). j'ai finalement réussi à tracer une ligne correctement :) j'ai utilisé l'algo de Bresenham et voilà :p
merci à vous de m'avoir aidé

pour les sources, c'est mon hébergeur qui délire en ce moment

Webmaster de www.forum-ti.fr.st