package Capitulo_3;

class Triangulo {
   private float a;
   private float b;
   private float c;
   private float A;
   private float B;
   private float C;

   
   Triangulo(float unA, float unB, float unC) {
     if(EsUnTriangulo(unA, unB, unC)){
        a = unA;
        b = unB;
        c = unC;
        A = (float)Math.acos( (b * b + c * c - a * a) / (2 * b * c)) ;
        B = (float)Math.acos( (a * a + c * c - b * b) / (2 * a * c)) ;
        C = (float)Math.acos( (a * a + b * b - c * c) / (2 * a * b)) ;
     }
     else {
        a = 0;
        b = 0;
        c = 0;
        System.out.println("Los numeros no forman un Triangulo");
     }
   }

   String tipo(){
     String salida = "";
     if(EsUnTriangulo(a,b,c)){
       if(a==b && a==c) salida ="Es un triangulo Equilatero";
       else if (a==b || b==c || a==c) salida = "Es un triangulo Isoceles";
       else if (A==(float)Math.PI/2.0 || B==(float)Math.PI/2.0 || C==(float)Math.PI/2.0 ) salida = "Es un triangulo Rectangulo";
       else salida = "Es un triangulo Escaleno"; 
     }
     else salida = "No es un triangulo";
     return salida;
   }

   double Perimetro() {
     return a+b+c;
   }
   
   double Area() {
      return (c * (float)Math.sin(B)*a/2.0f);
   }

   boolean EsUnTriangulo(float unA, float unB, float unC) {
     return (unA+unB > unC) && (unA+unC > unB) && (unB+unC >unA);
   }
   
   String info() {
      String sal = "";

      if(EsUnTriangulo(a,b,c)){
        float fac = 180.0f/(float)Math.PI;
        sal += "Los lados del triangulo son a = " + a + " b = " + b + " y c = " + c + "\n";
        sal += tipo() + "\n";
        sal += "Los Angulos son A = " + A*fac + " B = " + B*fac + " y  C = " + C*fac + "\n";
        sal += "El area del triangulo es " + Area() + "\n";
        sal += "El perimetro es "+ Perimetro() + "\n";
      }
      else sal += "No es un triangulo";
      return sal;
   }
}
