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

forumti Messages postés 4 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 11 août 2004 - 7 août 2004 à 21:57
forumti Messages postés 4 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 11 août 2004 - 11 août 2004 à 19:13
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

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
7 août 2004 à 23:29
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
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
7 août 2004 à 23:47
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...
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
7 août 2004 à 23:49
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
0
forumti Messages postés 4 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 11 août 2004
9 août 2004 à 13:38
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
0

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

Posez votre question
forumti Messages postés 4 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 11 août 2004
9 août 2004 à 20:54
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
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
10 août 2004 à 18:48
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....
0
forumti Messages postés 4 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 11 août 2004
11 août 2004 à 19:13
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
0
Rejoignez-nous