/*
 * Instituto Superior de Engenharia do Porto
 *
 * Estruturas de Informação
 *
 * 2000/2001
 *
 * ------------------------------------------
 *
 * classe para representar pontos num espaço bidimensional 
 *		
 * Ponto2D.h
 *
 */

#ifndef __PONTO2D_INC__

#define __PONTO2D_INC__


class Ponto2D
{
	int m_iX, m_iY;
public:
	Ponto2D(int x = 0, int y = 0);
	Ponto2D(const Ponto2D& o);

	int getX() const			{ return m_iX;}
	int getY() const			{ return m_iY;}

	double getRo() const;
	double getTeta() const;

	void setX(int x)			{ m_iX = x; }
	void setY(int y)			{ m_iY = y; }
	void setXY(int x, int y)	{ setX(x); setY(y); }

	Ponto2D& operator=(const Ponto2D& o);
	Ponto2D& operator-=(const Ponto2D& o);
	Ponto2D& operator+=(const Ponto2D& o);
};

Ponto2D operator+(const Ponto2D& a, const Ponto2D& b);
Ponto2D operator-(const Ponto2D& a, const Ponto2D& b);
bool operator==(const Ponto2D& a, const Ponto2D& b);
double distancia(const Ponto2D& a, const Ponto2D& b);
ostream& operator<<(ostream& output, const Ponto2D& obj);

#endif
