cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 2023
-
24 août 2006 à 15:27
cs_Fabian
Messages postés36Date d'inscriptionvendredi 5 octobre 2001StatutMembreDernière intervention 6 février 2009
-
24 nov. 2006 à 10:36
Salut à tous....
J'ai déjà posé quelques questions sur ce problème.... Et je croyais avoir saisi....
Cela fais plus de 30 minutes que je regarde avec mon patron et on ne résussi pas à trouver pourquoi ca ne fonctionne pas....
Je veux pour cet exemple transformer 268 Degré 50 Minute et 27 Seceonde en décimal... MAIS... pour cela je dois faire certain calcul..... Je sais que 268,8408333 est mon résultat final.
Ce résultat est possible à partie de coordonnées géographique que j'ai placé dans des Label
Voici mon Code et je mais en rouge les valeur de certaine variable
Mes variables sont tous des Double
Pi = 3.14159265358979
dbRadian = (180 / Pi) 'Ici je me demande si c'est OK
X1 = lblStationCoordX.Caption '-5.27806068619312
X2 = lblBackCoordX.Caption ' 21.1446186767566
Y1 = lblStationCoordY.Caption ' -66.2255826051614
Y2 = lblBackCoordY.Caption ' 19.9112606845735
dX X2 - X1 ' dX -60.947521918968 dY Y2 - Y1 ' dY -1,2333579921831
'***********************************************************************
'Formule pour connaître le cadrant dans lequel se trouve les coordonnées
If dX >= 0 And dY >= 0 Then
aTan1 = (Atn(dX / dY)) '* dbRadian
ElseIf dX >= 0 And dY < 0 Or dX < 0 And dY < 0 Then
aTan1 = (Atn(dX / dY) + Pi) '* dbRadian
ElseIf dX < 0 And dY >= 0 Then
aTan1 = (Atn(dX / dY) + (2 * Pi)) '* dbRadian
End If
'********************************************************************* aTan2 = aTan1 * dbRadian 'Convertir les Radians en Degrés décimaux
PROBLÈME
aTan2 = 268.84069833333
Mais je devrais arriver à 268.8408333
Si quelqu'un peut m'aider à trouver d'où vient mon problème....
Merci d'avance....
S'il y a quelque chose de pas clais gênez-vous pas...
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 24 août 2006 à 15:51
Salut,
En cherchant Covertion DMS = > Decimal sur google
j ai trouve une fonction (sur le site de MICROSOFT s il vous plait)
Not: Il y a aussi Decimal => DMS
je l'ai essayer et le résultat pour 268°50'27'' est 268.001944444444
Alors je ne sais pas comment faire pour avoir un résultat juste
Function Convert_Decimal(Degree_Deg As String) As Double
' Declare the variables to be double precision floating-point.
Dim degrees As Double
Dim minutes As Double
Dim seconds As Double
' Set degree to value before "°" of Argument Passed.
degrees = Val (Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
' Set minutes to the value between the "°" and the "'"
' of the text string for the variable Degree_Deg divided by
' 60. The Val function converts the text string to a number.
minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, _
InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
"°") - 2)) / 60
' Set seconds to the number to the right of "'" that is
' converted to a value and then divided by 3600.
seconds = Val (Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) _
/ 3600
Convert_Decimal = degrees + minutes + seconds
End Function
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 24 août 2006 à 16:54
Salut à vous
BasicInstinct
et bien pour la conversion, ca va je fais une affaire a peu pres comme toi
dbConvertion = (((Secondes / 60) + Minutes) / 60) + Degres
et ca fonctionne....
Le Prob est pourquoi dans mes calculs je n'arrive pas à la bonne réponse pour ma conversion...
jrivet J'ai regarder que ton résulta soit 268°50'27'' est 268.001944444444
et c'est vraiment une erreur ce code... car 50 minute de ne pas donner 268.0019444
Je crois qu'il y a une tres belle erreur dans ce code,,, Mais pas grave merci d'avoir chercher...
Le Prob est pourquoi dans mes calculs je n'arrive pas à la bonne réponse pour ma conversion...
Note: Je n'ai pas été clair dans mon message...... La conversion ca va...... Mais c'est plustot le calcul mathématique qui ne fonctionne pas et je ne réussi pas à arriver au bon résults en décimal... soit 268.8408333 = 268°50'27''
merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 août 2006 à 23:52
Je viens de me pencher sur ton calcul (j'ai failli en tomber dis donc ).
Je ne comprend pas d'ou tu sors tes différentes valeurs.
Avec les valeurs que tu donne pour x1, x2, y1 et y2, pour moi dx et dy sont positifs tous les deux.
De plus, avec les formules que tu donne pour dx et dy, ça veut dire que tu prend le point x1 comme référence.
Dans ce cas je trouverais un angle aux alentours de 72°.
j'ai essayer de tracer cela sur un morceaux de papier, 72° me va très bien. Par contre 268° non.
Je laisse tomber parceque je ne comprend pas garnd chose à la trigo, je suis surrement dans l'erreur.
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
cs_Fabian
Messages postés36Date d'inscriptionvendredi 5 octobre 2001StatutMembreDernière intervention 6 février 2009 24 nov. 2006 à 10:36
Salut JeffC1977,
En fait la fonction sur le site de Microsoft fonctionne correctement.
Simplement, il faut mettre une espace après °, ' et ""
Ou alors tu transforme la fonction comme tel
Function Convert_Decimal(Degree_Deg As String) As Double
' Declare the variables to be double precision floating-point.
Dim degrees As Double
Dim minutes As Double
Dim seconds As Double
' Set degree to value before "°" of Argument Passed.
degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
' Set minutes to the value between the "°" and the "'"
' of the text string for the variable Degree_Deg divided by
' 60. The Val function converts the text string to a number.
minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 1, _
InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, "°") - 1)) / 60
' Set seconds to the number to the right of "'" that is
' converted to a value and then divided by 3600.
seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
1, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 1)) / 3600
Convert_Decimal = degrees + minutes + seconds
End Function