#define _USE_MATH_DEFINES
#include "Cercle.h"
#include <cmath>

Cercle::Cercle()
:rayon(1), centre(0,0)
{}
Cercle::Cercle(double r, double x, double y)
: rayon(r), centre(x,y)
{}
Cercle::Cercle(double r, Point c)
: rayon(r), centre(c)
{}

double Cercle::getRayon() const
{
	return rayon;
}
Point Cercle::getCentre() const
{
	return centre;
}

double Cercle::perimetre() const
{
	return 2 * M_PI * rayon;
}
double Cercle::aire() const
{
	return M_PI * rayon * rayon;
}

bool Cercle::chevauche(Cercle autre) const
{
	double x1, x2, y1, y2;
	double rayon2;
	double distance;

	x1 = this->centre.getAbs();
	y1 = this->centre.getOrd();

	x2 = autre.getCentre().getAbs();
	y2 = autre.getCentre().getOrd();

	rayon2 = autre.getRayon();

	distance = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));

	return distance < this->rayon + rayon2;
}