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#