none
Calculo de distancias de cidades

    Question

  • Boas tarde caros amigos,

    tenho um programa para fazer em Microsoft Visual Studio 2005 que teja ligado a uma base de dados Acess,

    e que nessa base de dados existam 2 cidades com as suas latitudes e longitudes, e o que o programa tem que fazer é:

    1º ir a base de dados buscar essas 2 cidades

    2º calcular apartir de uma formula sejam:

    "a a latitude do ponto a (convertida em decimal, ex: 12º30' = 12,5º).
    b a latitude do ponto b (convertida em decimal).
    P a diferença de longitude entre os pontos (decimal), se der mais que 180, faça P corrigido = 360 - P.
    D a distância angular entre os pontos.

    a fórmula é

    D = [acos[(sen a)(sen b) + (cos a)(cos b)(cos P)]] x 111km"

    3ºapresentar o valor final da distancia entre as 2 cidades

     

    Caros colegas nao sei mxm como faxer isto por causa dos senos e consenos no Microsoft Visual Studio 2005

    Obrigado pela ajuda

    Sunday, April 25, 2010 2:12 PM

Answers

  • Bom, a conversão de radianos para grau é assim:

     

    Dim degrees As Double = (360.0 * radians) / (2 * Math.PI)


    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Wednesday, April 28, 2010 1:21 AM
  • Exatamente, se você quer converter por exemplo 100 em grau ficaria:

     

    radians = 100
    
    Dim degrees As Double = (360.0 * radians) / (2 * Math.PI)
    
    'degrees é o valor convertido em graus
    


    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Wednesday, April 28, 2010 10:30 AM

All replies

  • Calculando seno e cosseno, espero q ajude um pouco

     

      Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Label1.Text = "Seno: " & Me.GetSineOfDegrees(Convert.ToDouble(90), 4).ToString()
        Me.Label2.Text = "Cosseno: " & Me.GetCosOfDegrees(Convert.ToDouble(90), 4).ToString()
      End Sub
    
      Private Function GetSineOfDegrees(ByVal degrees As Double, ByVal decimalPlaces As Integer) As Double
        Dim radians As Double = 2 * Math.PI * degrees / 360.0
        Dim sine As Double = Math.Sin(radians)
    
        Return Math.Round(sine, decimalPlaces)
      End Function
    
      Private Function GetCosOfDegrees(ByVal degrees As Double, ByVal decimalPlaces As Integer) As Double
        Dim radians As Double = 2 * Math.PI * degrees / 360.0
        Dim cos As Double = Math.Cos(radians)
    
        Return Math.Round(cos, decimalPlaces)
      End Function


    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Sunday, April 25, 2010 3:09 PM
  • Olha eu percebo muito pouco de Visual basic e nao entendi aquilo que aqui puseste, sera que podias por uns comentarios ou simplificar a programaçao? se faz favor
    Monday, April 26, 2010 4:50 PM
  • '------------------------------------------------------------------------------------------------------
     'EXEMPLO DE COMO USAR AS FUNÇÕES
     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
      'MOSTRA NO LABEL1 O SENO DO ANGULO 90 COM 4 CASAS DECIMAIS
      Me.Label1.Text = "Seno: " & Me.GetSineOfDegrees(Convert.ToDouble(90), 4).ToString()
    
      'MOSTRA NO LABEL2 O COSENO DO ANGULO 90 COM 4 CASAS DECIMAIS
      Me.Label2.Text = "Cosseno: " & Me.GetCosOfDegrees(Convert.ToDouble(90), 4).ToString()
     End Sub
    
    
     '------------------------------------------------------------------------------------------------------
     'FUNÇÃO QUE CALCULA O SENO DE UM ANGULO EM GRAU INFORMADO
     Private Function GetSineOfDegrees(ByVal degrees As Double, ByVal decimalPlaces As Integer) As Double
      'PRIMEIRO CONVERTE O GRAU INFORMADO PARA RADIANOS, 'POIS NA MAIORIA DAS LINGUAGENS DE PROGRAMAÇÃO ESPERAM QUE VOCÊ INFORME OS ANGULOS EM RADIANO
      Dim radians As Double = 2 * Math.PI * degrees / 360.0
    
      'FUNÇÃO PARA CALCULAR O SENO PELO GRAU EM RADIANOS
      Dim sine As Double = Math.Sin(radians)
    
      'ARREDONA O SENO PARA O NUMERO DE CASAS DECIMAIS INFORMADA PELO PARAMETRO decimalPlaces
      Return Math.Round(sine, decimalPlaces)
     End Function
    
    
     '------------------------------------------------------------------------------------------------------
     'FUNÇÃO QUE CALCULA O COSENO DE UM ANGULO EM GRAU INFORMADO
     Private Function GetCosOfDegrees(ByVal degrees As Double, ByVal decimalPlaces As Integer) As Double
      'PRIMEIRO CONVERTE O GRAU INFORMADO PARA RADIANOS, 'POIS NA MAIORIA DAS LINGUAGENS DE PROGRAMAÇÃO ESPERAM QUE VOCÊ INFORME OS ANGULOS EM RADIANO
      Dim radians As Double = 2 * Math.PI * degrees / 360.0
    
      'FUNÇÃO PARA CALCULAR O COSENO PELO GRAU EM RADIANOS
      Dim cos As Double = Math.Cos(radians)
    
      'ARREDONA O COSSENO PARA O NUMERO DE CASAS DECIMAIS INFORMADA PELO PARAMETRO decimalPlaces
      Return Math.Round(cos, decimalPlaces)
     End Function
    
    espero q ajude

    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Monday, April 26, 2010 5:13 PM
  • olha obrigad ate agora pela ajuda

    agora tenho oto problema

    eu tenho:

    cosenoa = Math.Cos(a)

    o resultado de "a" vem me em radianos .. mas eu tenho que passar para gaus e tentei com isto:

    cosenoa = Math.Cos(a)
    cosenoa = cosenoa * (180 / Math.PI)

    e isto devia converter os radianus em graus e nao convert .. sabes de mais alguma forma de converter?

     

    Muito Obrigado ate agora

    Wednesday, April 28, 2010 12:18 AM
  • Bom, a conversão de radianos para grau é assim:

     

    Dim degrees As Double = (360.0 * radians) / (2 * Math.PI)


    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Wednesday, April 28, 2010 1:21 AM
  • Dim
     degrees As
     Double
     = (360.0 * radians) / (2 * Math.PI)


    ou seja o valor ke eu queira passar para graus ponho no sitio ke dix "radianos" e fica guardado na variavel "degrees"?
    Wednesday, April 28, 2010 7:44 AM
  • Exatamente, se você quer converter por exemplo 100 em grau ficaria:

     

    radians = 100
    
    Dim degrees As Double = (360.0 * radians) / (2 * Math.PI)
    
    'degrees é o valor convertido em graus
    


    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Wednesday, April 28, 2010 10:30 AM
  • Muito obrigado amigo,

     Olha sabes fazer o arco coseno, tipo:

    arc cos (0,9984242) = 3,2169287

     

    o arc cos de 0,9984242 e tem ke dar 3,2169287

     

    se pudesses, agradecia imenso

    Wednesday, April 28, 2010 1:19 PM
  • Olha só, as funções neste link

     

    http://tamaspiros.co.uk/category/vbnet/


    "ѕó αqυєℓєѕ q тєм α ¢σяαgєм ∂є ¢αмιηнαя, ρσ∂єм νινєя тσ∂σѕ σѕ ∂ιαѕ ηα ¢єятєzα ∂є ¢нєgαя" msn: poseidonfba@hotmail.com
    Wednesday, April 28, 2010 5:27 PM