Compteur à aiguille (kilometrique)

cs_olyve Messages postés 2 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 17 avril 2003 - 17 avril 2003 à 09:22
rouxela Messages postés 11 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 12 juillet 2005 - 8 avril 2005 à 08:30
Salut
Le sujet de mon projet est un simulateur de voiture. Je dois, entre autre, creer un compteur kilometrique. En fait, en appuyant sur une touche l'aiguille doit se deplacer dans un cadran circulaire. L'aiguille a deux extremités. (x1, y1) est fixe et se trouve au centre du cadran. Par contre, (x2, y2) doit se deplacer en decrivant un cercle. Mon probleme est là! Pour faciliter les choses, j'utilise d'abord un bouton. A chaque clique je voudrai que l'aiguille se deplace d'un angle "alpha". Il s'agit de 2 ou 3 lignes de codes mathematiques que je n'arrive pas a trouver. Si certains ont une idée , je leurs serai infiniement reconnaissant.
merci
@ plus
Olaïve

3 réponses

lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
17 avril 2003 à 09:37
T'as entendu parlé des coordonnées polaires, eh ben voilà tu fais une recherche dans ta bu et tu as tout gagné.

be linux
0
cs_olyve Messages postés 2 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 17 avril 2003
17 avril 2003 à 10:27
salut
je connais les coordonnées polaires mais je sais pas comment m'en sarvir en vb. je debute depuis quelques jours et j'ai decouvert ce site il n'ya que quelques heures. je ne voudrai pas abuser mais si tu pouvais me donner plus de details ca m'aiderait beaucoup.
olyve
0
rouxela Messages postés 11 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 12 juillet 2005
8 avril 2005 à 08:30
'Affiche la position de l'aiguille ds le Cadran
Public Function AfficheCadran(value As Single, Vmax, Pic As PictureBox)
'Attention les Graduations doivent être dessinées avant ds la picturebox
'A déterminer en fct de la taille de l'aiguille

' Les variables que l'ont peut regler :
'CentreX , CentreY
'L'angle de décalage de départ
'La valeur max du cadran
'La taille de l'aiguille
' Les coordonées du centre
Dim CentreX, CentreY As Long
'L'angle de l'aiguille
Dim Angle As Single
'La taille de l'aiguille
Dim Taille_Aiguille As Long
'L'angle de décalage de l'aiguille à valeur 0 par rapport à la verticale
Dim Angle_Decalage As Long
Dim Angle_Max As Long
'la variable Angle_Milieu sert a determiner la valeur médiane du Cadran
'pour en fct de cette valeur affiché la Variable Value à gauche ou à droite de l'aiguille
Dim Angle_Milieu As Single

On Error Resume Next

Pic.ForeColor = &HFF0000
Angle_Decalage = 90
Angle_Max = (360 - Angle_Decalage * 2)
Taille_Aiguille = 1800
'Place le Pivot de l'aiguille
CentreX = Pic.ScaleWidth / 2
CentreY = Pic.ScaleHeight / 1.1
'Converti la valeur en angle
'(on ne prend pas 360° mais 360° - l'angle de décalage de départ * 2 (le meme de chaque coté de l'axe vertical))
Angle = ((360 - Angle_Decalage * 2) / Vmax) * value
'Positionne l'angle de départ de l'aiguille sur le cadran
'90 pour que l'aiguille soit à la verticale + Angle_Decalage
Angle = Angle + 90 + Angle_Decalage
Angle_Milieu = (Angle_Max / 2) + 90 + Angle_Decalage
If Angle > 360 + 90 - Angle_Decalage Then Angle = 360 + 90 - Angle_Decalage
' Convertit l'angle en radian (à la place des degrés)
Angle = 3.1415926 / 180 * Angle
Angle_Milieu = 3.1415926 / 180 * Angle_Milieu
' Efface le cadran
Pic.Cls
' Epaisseur de l'aiguille
Pic.DrawWidth = 3
C'est ici les coordonnées polaires!!!!!
' Dessine l'aiguille
Pic.Line (CentreX, CentreY)-(CentreX + Cos(Angle) * Taille_Aiguille, CentreY + Sin(Angle) * Taille_Aiguille)
' Affiche la Valeur a coté de l'aiguille
' i = CentreX + Cos(Angle) * Taille_Aiguille
' j = CentreY + Sin(Angle) * Taille_Aiguille
'Si la valeur est inférieur à Angle_Milieu alors on affiche
'la valeur à gauche de l'aiguille sinon a droite
If Angle < Angle_Milieu Then Pic.CurrentX = Pic.CurrentX - 450
Pic.CurrentY = Pic.CurrentY - 75
Pic.ForeColor = &HFF&
Pic.FontBold = True
Pic.FontSize = 14
Pic.Print value

End Function
0
Rejoignez-nous