//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: sphere.hpp
//      Краткое описание: sphere volume
//


namespace math
{
	inline Sphere::Sphere()
	{
		position = Vect3(0, 0, 0);
		radius = 0;
	};

	inline Sphere::Sphere(const Vect3& position, const float radius)
	{
		this->position = position;
		this->radius = radius;
	};

	inline Sphere::Sphere(const Sphere& sphere)
	{
		position = sphere.getPosition();
		radius = sphere.getRadius();
	};

	inline Sphere& Sphere::operator =(const Sphere& sphere)
	{
		position = sphere.getPosition();
		radius = sphere.getRadius();
		return *this;

	};

	inline Sphere::~Sphere()
	{

	};

	inline bool Sphere::operator ==(const Sphere& sphere)
	{
		return float_equal(radius, sphere.getRadius()) && position == sphere.getPosition();
	};

	inline bool Sphere::operator !=(const Sphere& sphere)
	{
		return float_notequal(radius, sphere.getRadius()) || position != sphere.getPosition();
	};

	inline void Sphere::setPosition(const Vect3& new_position)
	{
		position = new_position;
	};

	inline const Vect3& Sphere::getPosition() const
	{
		return position;
	};

	inline void Sphere::setRadius(const float new_radius)
	{
		radius = new_radius;
	};

	inline const float Sphere::getRadius() const
	{
		return radius;
	};

	inline void Sphere::setSphere(const Vect3& new_position, const float new_radius)
	{
		position = new_position;
		radius = new_radius;
	};

	inline bool Sphere::getIsIntersect(const Sphere& sphere) const
	{
		return distance(position, sphere.position) < (radius + sphere.radius);
	};
};