//
// Autore: Giuliano Pellegrini Parisi
//
// Classe: 3^Sirio Informatica
//
// Data: 15 gennaio 2009
//
// Oggetto: libreria fbblGeometriaPiana
//
// Release: 0.1e

using System;


namespace fbblGeometriaPiana  // namespace è sinonimo di valigetta degli attrezzi
{

    public class StrumentiGeometriaPiana   // All'interno della valigetta ho una sezione dove metto gli attrezzi
    {

        // Abbiamo 4 funzioni polimorfiche!
        // Una funzione è polimorfica se ha lo stesso nome e lo stesso numero di parametri passati.
        //
        // Il concetto di POLIMORFICO E' CHIAMATO OVERLOAD


        static public int AreaRettangolo(int Base, int Altezza)
        {
            return Base * Altezza;
        }

        static public double AreaRettangolo(double Base, double Altezza)
        {
            return Base * Altezza;
        }

        static public int PerimetroRettangolo(int Base, int Altezza)
        {
            return (Base + Altezza) * 2;
        }

        static public double PerimetroRettangolo(double Base, double Altezza)
        {
            return (Base + Altezza) * 2;
        }

        static public double IpotenusaTriangolo(double Dato1,double Dato2)
        {
            return Math.Sqrt(Math.Pow(Dato1,2)+Math.Pow(Dato2,2));
        }

        static public double AreaCerchio(double Dato)
        {
            return Math.Pow(Dato,2)*Math.PI;
        }

        static public double CirconferenzaCerchio(double Dato)
        {
            return 2 * Dato * Math.PI;
        }

        static public double PerimetroTriangolo(double Lato1,double Lato2,double Lato3)
        {
            return Lato1 + Lato2 + Lato3;
        }

        static public double AreaTriangolo(double Lato1, double Lato2, double Lato3)
        {
            double SemiPerimetro;

            SemiPerimetro = PerimetroTriangolo(Lato1,Lato2,Lato3)/2;

            return Math.Sqrt(SemiPerimetro*(SemiPerimetro-Lato1)*(SemiPerimetro*Lato2)*(SemiPerimetro-Lato3));
        }

        static public double PerimetroTrapezioRettangolo(double BaseMaggiore,double BaseMinore,double Altezza)
        {
            double LatoObliquo;

            LatoObliquo = IpotenusaTriangolo(BaseMaggiore-BaseMinore,Altezza);

            return BaseMaggiore + BaseMinore + Altezza + LatoObliquo;
        }


      
    }

}
