using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProjetDotNet.metier
{
    public class PointForme
    {
        private double _x;
        private double _y;
        
        public double X
        {
            get
            {
                return _x;
            }
            set
            {
                _x = value;
            }
        }

        public double Y
        {
            get
            {
                return _y;
            }
            set
            {
                _y = value;
            }
        }

        public PointForme(double x, double y)
        {
            _x = x;
            _y = y;
        }

        public PointForme()
        {
            _x = 0;
            _y = 0;
        }

        public PointForme(PointForme p)
        {
            _x = p.X;
            _y = p.Y;
        }

       public PointForme rotation(PointForme centre,double angle) 
        {
	        double x=0,y=0;

	        /*if(centre.X==0&&centre.Y==0)
	        {  
		         x=(X*Math.Cos(angle)) - (Y*Math.Sin(angleradian));
		         y=(X*Math.Sin(angle)) + (Y*Math.Cos(angleradian));
	        }
	        else
	        {*/
		         x=(X-centre.X)*Math.Cos(angle) - (Y-centre.Y)*Math.Sin(angle) + centre.X;
		         y=(X-centre.X)*Math.Sin(angle) + (Y-centre.Y)*Math.Cos(angle) + centre.Y;
	        //}

	        return new PointForme(x,y);
        }

       public PointForme translation( PointForme a,PointForme b) 
        { 
	        double x=0,y=0;
	        x=X+(b.X-a.X);
	        y=Y+(b.Y-a.Y);
            return new PointForme(x, y);
        }

        public PointForme homothetie( PointForme centre,double zoom)  
        {	
            double mouvx,mouvy;

	        /*if(X>=centre.X) //cas de figure 1-> x du point> x du point de repère
	        { mouvx=(X-centre.X)*zoom;
	        }
	        else
	        { mouvx=(centre.X-X)*zoom;//cas de figure 2-> x du point> x du point de repère
	        }

	        if(Y>=centre.Y) //pareil avec y
	        { mouvy=(Y-centre.Y)*zoom;
	        }
	        else
	        { mouvy=(Y-centre.Y)*zoom;
	        }*/
            mouvx = (X - centre.X) * zoom;
            mouvy = (Y - centre.Y) * zoom;

	        double x=centre.X+mouvx;
	        double y=centre.Y+mouvy;



            return new PointForme(x, y);
        }
    }
}
