none
Converter valores ACos (Radiano para Grau) RRS feed

  • Pergunta

  • Olá, estou fazendo um programa para resolver os exercícios de física do meu curso e em um momento do mesmo, lidamos com medidas em grau. Fui colocar essas medidas no programa, entretanto, essas medidas retornaram em radiano, não em grau. Após pesquisar um pouco, descobri como converter os ângulos de radiano para grau, porém não consegui retornar os valores dos ângulos de radiano para grau.

    Gostaria de saber como conseguir esses valores do ângulo em grau.

    Exemplo:

    30º -> raiz de 3 / 2

    45º -> raiz de 2 / 2

    60º -> 1 / 2

    Grato, Rafael.

    terça-feira, 6 de dezembro de 2016 23:41

Respostas

  • Eu acho que seu problema esta no entendimento da Matematica.

    Voce nao obtem o Arco do Cosseno à partir de um angulo, voce obtem o Arco do Cosseno à partir de um cosseno (que varia entre -1 e 1)

    https://pt.wikipedia.org/wiki/Cosseno

    O arco cosseno é um operaçao trigonometrica inversa:

    https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%B5es_trigonom%C3%A9tricas_inversas

    Veja como é que é calculado graficamente o cosseno:

    Agora, se voce quer obter o COSSENO de um angulo dado por um textbox em VB.NET, entao faça assim:

    Dim arcoEmGraus as Double= Convert.ToDouble(TextBoxAnguloEmGraus.Text)
    Dim arcoEmRadianos as Double=arcoEmGraus*(Math.PI/180)
    Dim cosseno as Double=Math.Cos(arcoEmRadianos)'parametro sempre em radianos
    
    TextBoxValorDoCosseno.Text=cosseno.ToString("0.000")'formata para aparecer somente 3 decimais
    att




    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    segunda-feira, 12 de dezembro de 2016 20:01
    Moderador

Todas as Respostas

  • Rafael,

    Pra fazer o cálculo de raiz quadrada basta usar o Math.Sqrt. Ex:

    Dim trintaGraus As Double = Math.Sqrt(3/2)
    
    Dim sessenta As Double = 1/2

    Esta outra resposta no MSDN mostra como converter radiano em grau: https://social.msdn.microsoft.com/Forums/en-US/9f7a0f31-a6cc-4844-b22d-4d7681afe865/converting-a-variable-from-radians-to-degrees?forum=vblanguage


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 7 de dezembro de 2016 00:03
  • Juliano, obrigado pela resposta. Consegui algum progresso, entretanto quando eu insiro o valor "90º", seu cosseno aparece como "6,1230..."

    Alguma forma de fixar isso?

    Código utilizado:

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
            Try
          
    
                If ComboBox1.Text <> "???" Then
    
                    Dim degreesAngle As Double 
                    Dim radiansAngle As Double
                    Dim radiansCosValue As Double  
                    Dim degreesCosValue As Double 
    
                    Double.TryParse(ComboBox1.Text, degreesAngle) 
    
                    radiansAngle = degreesAngle / (180 / Math.PI) 
    
                    radiansCosValue = Math.Cos(radiansAngle) 
    
    
                    degreesCosValue = radiansCosValue 
                    TextBox19.Text = degreesCosValue.ToString 
    
    
    
                ElseIf ComboBox1.Text = "???" Then
                    TextBox19.Text = ""
    
    
                End If
            Catch ex As Exception
    
    
    
            End Try
        End Sub


    • Editado Rafael Knust quarta-feira, 7 de dezembro de 2016 20:39
    quarta-feira, 7 de dezembro de 2016 20:37
  • Nao.. o valor fornecido pelo ACOS sempre é em radiano, o valor fornecido é um COSSENO e este vai de -1 à 1 (nao existem outros valores)

    veja mais aqui: https://msdn.microsoft.com/en-us/library/system.math.acos%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    se voce quiser ver o resultado em graus, faça assim:

    double acosEmGraus1=(180/Math.PI)*(Math.Acos(Math.Sqrt(3)/2)))//retorna 30
    
    double acosEmGraus2=(180/Math.PI)*(Math.Acos(1/2)))//retorna 60
    
    

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quarta-feira, 7 de dezembro de 2016 21:17
    Moderador
  • William, obrigado pela resposta, mas ainda não é o que preciso. Estou com dúvida em como conseguir os valores do cosseno de um ângulo em grau, ou seja, adicionei esse código acima em um Timer para que todas as vezes que inserirmos um valor na ComboBox1, o valor desse ângulo seja mostrado na TextBox ao lado, por exemplo, ao inserirmos 180º (Já em grau) na ComboBox1, o valor do cosseno deste ângulo é expresso na TextBox ao lado que no caso seria "-1" entretanto há um erro que não consigo identificar pois quando inserimos 90º ou 270º, o valor expresso na TextBox ao lado não corresponde com o valor do cosseno do ângulo citado... Gostaria de saber como resolver isso.

    OBS: Já pus o código para passar os ângulos de radiano para grau, o que falta agora é conseguir achar os valores do cosseno dos respectivos ângulos pelo Timer (180º -> -1 / 360º -> 1 ... )

    Grato,

    Rafael

    quinta-feira, 8 de dezembro de 2016 17:37
  • Rafael, não tem a ver com a dúvida do cálculo em si, mas não entendi a necessidade de um timer pra pegar o valor e realizar o cálculo.

    E se está digitando o valor, pq está usando um ComboBox?

    Whatever...rsrs..segue exemplo de código com as saídas dos testes:

    public class Program
    {
    	public static void Main()
    	{
    		Console.WriteLine(Math.Cos(DegreeToRadian(0f)));
    		Console.WriteLine(Math.Cos(DegreeToRadian(30f)));
    		Console.WriteLine(Math.Cos(DegreeToRadian(60f)));
    		Console.WriteLine(Math.Cos(DegreeToRadian(90f)));
    		Console.WriteLine(Math.Cos(DegreeToRadian(180f)));
    
    	}
    
    	private static double DegreeToRadian(double angle)
    	{
    		return Math.PI * angle / 180.0;
    	}
    
    	private static double RadianToDegree(double angle)
    	{
    		return angle * (180.0 / Math.PI);
    	}
    }
    Saída:
    1
    0.866025403784439
    0.5
    6.12303176911189E-17
    -1


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 8 de dezembro de 2016 17:55
  • William, obrigado pela resposta, mas ainda não é o que preciso. Estou com dúvida em como conseguir os valores do cosseno de um ângulo em grau, ou seja, adicionei esse código acima em um Timer para que todas as vezes que inserirmos um valor na ComboBox1, o valor desse ângulo seja mostrado na TextBox ao lado, por exemplo, ao inserirmos 180º (Já em grau) na ComboBox1, o valor do cosseno deste ângulo é expresso na TextBox ao lado que no caso seria "-1" entretanto há um erro que não consigo identificar pois quando inserimos 90º ou 270º, o valor expresso na TextBox ao lado não corresponde com o valor do cosseno do ângulo citado... Gostaria de saber como resolver isso.

    OBS: Já pus o código para passar os ângulos de radiano para grau, o que falta agora é conseguir achar os valores do cosseno dos respectivos ângulos pelo Timer (180º -> -1 / 360º -> 1 ... )

    Grato,

    Rafael

    No titulo da sua duvida esta escrito:"Converter valores ACos (Radiano para Grau) "

    Eu entendi que voce estava tentando usar como parametro para o ACos (Arco cujo cosseno é ) um valor em radiano.

    A funçao cosseno so aceita valores em radianos, como o Juliano mostrou, portanto valores entre 0 à 2 PI  (e multiplos detes)

    Outro detalhe:

      radiansCosValue = Math.Cos(radiansAngle) 

    radiansCosValue nao faz sentido, porque o valor de um cosseno nao é em radianos e sim um valor entre -1 e 1.

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 8 de dezembro de 2016 18:53
    Moderador
  • Ainda não consegui o código para conseguir o valor do Arco do Cosseno em grau :/

    Não sei mais o que fazer...

    sábado, 10 de dezembro de 2016 21:01
  • Rafael,

    Arco do Cosseno é a operaçao reversa do cosseno.

    Cosseno de 90° é 0

    Arco cujo o cosseno é 0 é 90°.

    Em c#:

    double arcoEmGraus=90;
    double arcoEmRadianos=arcoEmGraus*(Math.PI/180);
    double cosseno=Math.Cos(arcoEmRadianos);//parametro sempre em radianos
    double arcoDoCossenoEmRadianos=Math.ACos(cosseno);//resultado sempre em radianos
    double arcoDoCossenoEmGraus=arcoDoCossenoEmRadianos*(180/ Math.PI);

    Eu nao sei o que voce esta tentando fazer. Seu titulo fala de ACos, mas seu codigo de exemplo voce so usa o Cos.

    Diga-nos exatamente o que voce quer fazer.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    domingo, 11 de dezembro de 2016 00:09
    Moderador
  • Boa tarde William! Gostaria de um código em VB.net para conseguir os valores do arco do cosseno (em grau) de um determinado ângulo. Por exemplo, ao inserir o ângulo em uma TextBox, o valor do arco do cosseno desse ângulo será mostrado em outra TextBox.

    Grato,

    Rafael

    segunda-feira, 12 de dezembro de 2016 19:31
  • Eu acho que seu problema esta no entendimento da Matematica.

    Voce nao obtem o Arco do Cosseno à partir de um angulo, voce obtem o Arco do Cosseno à partir de um cosseno (que varia entre -1 e 1)

    https://pt.wikipedia.org/wiki/Cosseno

    O arco cosseno é um operaçao trigonometrica inversa:

    https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%B5es_trigonom%C3%A9tricas_inversas

    Veja como é que é calculado graficamente o cosseno:

    Agora, se voce quer obter o COSSENO de um angulo dado por um textbox em VB.NET, entao faça assim:

    Dim arcoEmGraus as Double= Convert.ToDouble(TextBoxAnguloEmGraus.Text)
    Dim arcoEmRadianos as Double=arcoEmGraus*(Math.PI/180)
    Dim cosseno as Double=Math.Cos(arcoEmRadianos)'parametro sempre em radianos
    
    TextBoxValorDoCosseno.Text=cosseno.ToString("0.000")'formata para aparecer somente 3 decimais
    att




    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    segunda-feira, 12 de dezembro de 2016 20:01
    Moderador
  • Opa brigadão William! Consegui o que queria!

    O problema era realmente no código... Isso estava me confundindo bastanto visto que estou iniciando nessa linguagem... Valeu :)

    segunda-feira, 12 de dezembro de 2016 21:20