/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Capitulo_4.Triangulos;

/**
 *
 * @author calderon
 */
public class Triangulo {
    private double a;
    private double b;
    private double c;
    private double A;
    private double B;
    private double C;
    
    public Triangulo(double unaA, double unaB, double unaC) {
        if(EsUnTriangulo(unaA, unaB, unaC) ) {
            a = unaA;
            b = unaB;
            c = unaC;
            
            C = Math.acos((a*a + b*b - c*c)/(2.0f*a*b));
            A = Math.acos((c*c + b*b - a*a)/(2.0f*c*b));
            B = Math.acos((a*a + c*c - a*a)/(2.0f*a*c));
            
            A *= 180.0f/Math.PI;
            B *= 180.0f/Math.PI;
            C *= 180.0f/Math.PI;
            
        }
        else {
            a= -1;
            b= -1;
            c= -1;
        }
    }
    
    public boolean EsUnTriangulo(double unaA, double unaB, double unaC) {
        if(unaA < 0) return false;
        if(unaB < 0) return false;
        if(unaC < 0) return false;
        
        if(unaA + unaB >= unaC) return true;
        if(unaB + unaC >= unaB) return true;
        if(unaC + unaB >= unaA) return true;
        return false;
    }
    
    public String info() {
        String aux;
        
        aux = "Los lados del triangulo son a = " +a + " b = " + b + " c = " + c +"\n"; 
        aux += "Los angulos son A = " + A + " B = " + B + " C = " + C +"\n";     
        
        if(a == b && a == c) 
            aux += "Es un triangulo Equilatero \n";
        else if(a == b || a == c || b == c) 
            aux += "Es un triangulo Isoceles \n";
        else aux += "Es un triangulo Escaleno \n";
        
        if(A == 90 || B == 90 || C == 90)
            aux += "Adicionalemte es un triangulo Rectangulo \n";
        
        aux += "El area del triangulo es " + Area() + " y el perimetro es " + 
                Perimetro();
        
        return aux;
    }
    
    public double Area() {
        double s = (a + b + c)/2.0f;
        double area;
        area = (double)Math.sqrt(s*(s-a)*(s-b)*(s-c));
        return area;
    }
    
    public double Perimetro() {
        return (a+b+c);
    }
    
    @Override
    public String toString() {

        if(a < 0 && b < 0 && c <0)
            return "Los lados proporcioandos no forman un triangulo";
        else
            return info();
    }
    
}
