C# - Relações métricas em um triângulo retângulo
Hoje vamos criar uma aplicação usando os recursos da linguagem C# para mostrar as relações métricas em um triângulo retângulo.
Vamos começar lembrando com um pouco de teoria básica sobre o triângulo retângulo e suas relações.
O que é um triângulo retângulo?
É uma figura geométrica plana, composta por três lados e três ângulos internos
sendo que um dos seus ângulos é igual a 90° (ângulo reto).
Os lados de um triângulo retângulo recebem nomes especiais:
|
A seguir temos algumas das principais relações obtidas em um triângulo retângulo:
Vamos usar essas relações para calcular os lados e o ângulo de um triângulo retângulo usando a linguagem C#.
Abra o Visual Studio 2012 Express for desktop e crie um novo projeto do tipo Windows Forms Application com o nome RelacoesNoTriangulo:
A seguir vamos incluir no formulário form1.cs os seguintes controles:
Disponha os controles conforme mostra a figura abaixo:
No exemplo estamos tratando dois casos envolvendo triângulos retângulos:
1- O primeiro caso onde temos um triângulo retângulo com 1 ângulo conhecido igual a 30 graus e onde com a informação de um dos três outros lados iremos calcular os outros dois lados restantes. O usuário deverá marcar o lado para o qual informará o valor e usando o controle NumericUpDown informar o valor clicando a seguir no botão Calcular.
2- O segundo caso onde temos um triângulo retângulo com 1 lado conhecido (cateto adjacente ao ângulo Ang) e com a informação do ângulo ou de um dos outros dois lados calcularemos o lado/ângulo restante. O usuário deverá marcar o lado ou ângulo para o qual informará o valor e usando o controle NumericUpDown informar o valor clicando a seguir no botão Calcular.
Veja o código do botão Calcular para o primeiro caso:
private void btnCalcular1_Click(object sender, System.EventArgs e) { //valor de A1 double a = (double)(nudA1.Value); //valor de B1 double b = (double)(nudB1.Value); //valor de C1 (hipotenusa) double c = (double)(nudC1.Value); //foi fornecido o valor de A1 if (rbA1.Checked == true) { // tg 30 = cateto oposto / cateto adjacente => B1/A1 // 30 graus = 30*pi/180 radianos // B1 = a * tg 30 nudB1.Value =(decimal)(a*Math.Tan (30*Math.PI/180)); // cosseno = cateto adjacente / hipotenusa => A1/C1 // C1 = A1 / cos 30 nudC1.Value =(decimal)(a/Math.Cos (30*Math.PI/180)); } else if (rbB1.Checked == true) { // tangente = cateto oposto / cateto adjacente // tag 30 = B1/A1 // A1 = B1/tg 30 nudA1.Value =(decimal)(b/Math.Tan (30*Math.PI /180)); // seno = cateto oposto / hipotenusa => sen 30 = B1/C1 // C1 = B1 / sen 30 nudC1.Value =(decimal)(b/Math.Sin (30*Math.PI /180)); } else if (rbC1.Checked == true) { // cosseno = cateto adjacente / hipotenusa => A1/C1 // A1 = C1 * cos 30 nudA1.Value =(decimal)(c*Math.Cos (30*Math.PI /180)); // seno = cateto oposto / hipotenusa => sen 30 = B1/C1 // B1 = sen 30 * C1 nudB1.Value =(decimal)(c*Math.Sin (30*Math.PI /180)); } } |
Veja o código do botão Calcular para o segundo caso:
private void btnCalcular2_Click(object sender, System.EventArgs e) { //cateto adjacente double a = 10; //cateto oposto B2 double b2 = (double)(nudB2.Value); // hipotenusa C2 double c2 = (double)(nudC2.Value); // angulo double angle = (double)(nudAng.Value); //informou valor de B2 if (rbB2.Checked == true) { // hipotenusa(C2) = raiz quadrada da soma dos catetos (b2 e a) // C2^2 = ^2 + b2^2 nudC2.Value = (decimal)(Math.Sqrt((b2 * b2) + (a * a))); // tag ang = catego oposto / cateto adjacente => B2/10 //Atan => retorna o angulo cuja tangente é o número especificado nudAng.Value = (decimal)(Math.Atan(b2/a)*180/Math.PI); } else if (rbC2.Checked == true) // forneceu valor para C2 { try { // hipotenusa(C2) = raiz quadrada da soma dos catetos (b2 e a) // C2^2 = a^2 + b2^2 // b2 = sqrt( C2^2 - a^2) nudB2.Value = (decimal)(Math.Sqrt((c2*c2) - (a*a))); // cos ang = cateto adjacente / hipotenusa => a / C2 // Multiplicando o valor de retorno por 180/Math.PI converte de radianos para graus. // Acos => retorna o angulo cujo coseno é o número especificado nudAng.Value = (decimal)(Math.Acos((a/c2)*180/Math.PI)); } catch(System.ArithmeticException caught) { MessageBox.Show(caught.Message); } } else if (rbAng.Checked == true) { // tangente = cateto oposto / cateto adjacente => B2/10 // logo => 10 * tangente = b2 nudB2.Value = (decimal)(a*(Math.Tan(angle*Math.PI /180))); //cosseno = cateto adjacente / hipotenusa => cos ang = a/C2 // C2 = a / cos ang nudC2.Value = (decimal)(a/(Math.Cos(angle*Math.PI /180))); } } |
Em ambos os códigos estamos usando os seguintes métodos da classe Math para realizar os cálculos:
angulo = 30;
radianos = angulo * (Math.PI/180);
tesultado = Math.Tan(radianos);
A seguir vemos um exemplo de cálculo usando o programa onde fornecemos os valores para A1=2.5 e B2=6.0 e calculamos os demais.
É um exemplo básico que mostra como usar os recursos da classe Math para calcular e aprender um pouco das relações métricas em um triângulo retângulo.
Pegue o sistema completo aqui: RelacoesNoTrianguloRetangulo.zip
João 6:38
Porque eu desci do céu, não para fazer a minha vontade, mas a vontade daquele que me enviou.João 6:39
E a vontade do que me enviou é esta: Que eu não perca nenhum de todos aqueles que me deu, mas que eu o ressuscite no último dia.Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#