Скачиваний:
13
Добавлен:
01.05.2014
Размер:
2.19 Кб
Скачать
// ” ©«: point.cpp
// ђҐ «Ё§ жЁп Є« бб  Point
// Ђўв®а: ђг­®ў Ђ.Ђ. Ја. 2355
// „ в : 03.04.2005

#include "point.h"

void Point::recountpolar()
/*
	ЏҐаҐбзҐв Ї®«па­ле Є®®а¤Ё­ в Ї® бгйҐбвўгойЁ¬
	(Ё§¬Ґ­Ґ­­л¬) ¤ҐЄ ав®ўл¬.
*/
{
	r = sqrt(x*x + y*y);
	if ((x==0) && (y==0))
		fi = 0;
	else
		if ((x==0) && (y < 0))
			fi = -M_PI/2;
		else
			if ((x==0) && (y > 0))
				fi = M_PI/2;
			else
				fi = atan2(y,x);
}
// ¬®¤ЁдЁЄ в®ал :

	void Point::MoveTo(const Point &p)
	/*
		ЏҐаҐ¬ҐйҐ­ЁҐ ў § ¤ ­­го в®зЄг p
	*/
	{
		x = p.x;
		y = p.y;
		recountpolar();
	}
	void Point::MoveOn(float dx, float dy)
	/*
		ЏҐаҐ¬ҐйҐ­ЁҐ ­  § ¤ ­­®Ґ ᬥ饭ЁҐ (dx,dy)
	*/
	{
		x += dx;
		y += dy;
		recountpolar();
	}
	void Point::Rotate(const Point &p, float alpha)
	/*
		Џ®ў®а®в ®в­®бЁвҐ«м­® § ¤ ­­®© в®зЄЁ p
		­  гЈ®« alpha
	*/
	{
		if (!((x == p.x) && (y == p.y)))
		{
			float x1;
			x1 = cos(alpha) * (x - p.x) - sin(alpha) * (y - p.y) + p.x;
			y = sin(alpha) * (x - p.x) + cos(alpha) * (y - p.y) + p.y;
			x = x1;
			recountpolar();
		}
	}

	void Point::SetR(float newR)
	/*
		“бв ­®ўЄ  §­ зҐ­Ёп ¤«Ё­л а ¤Ёгб-ўҐЄв®а 
	*/
	{
		r = newR;
		x = r * cos(fi);
		y = r * sin(fi);
	}

	 void Point::operator= (Point &p)
	 /*
		ЏҐаҐЈаг§Є  ®ЇҐа в®а  =
	 */
	 {
		x = p.x;
		y = p.y;
		recountpolar();
	 }

	 void Point::operator+= (Point &p)
	 /*
		ЏҐаҐЈаг§Є  ®ЇҐа в®а  +=
	 */
	 {
		x = x + p.x;
		y = y + p.y;
		recountpolar();
	 }

	 int Point::operator== (Point &p)
	 /*
		ЏҐаҐЈаг§Є  ®ЇҐа в®а  ==
	 */
	 {
			return ((x == p.x) && (y == p.y));
	 }

	 int Point::operator% (Point &p)
	 /*
		ЏҐаҐЈаг§Є  ®ЇҐа в®а  %
		"ЇаЁЎ«Ё§ЁвҐ«м­® а ў­®"
	 */
	 {
			float eps = 0.0001;
			return ((abs(x - p.x) < eps) && (abs(y - p.y) < eps));
	 }

// ᥫҐЄв®ал :
	/*
		‚®§ўа й ов Ї®«п (x,y,r,fi) ®ЎмҐЄв  :
	*/
	float Point::GetX() { return x; }
	float Point::GetY() { return y; }
	float Point::GetR() { return r; }
	float Point::GetFi() { return fi; }

// Є®­бвагЄв®а :

	Point::Point(float x0, float y0)
	/*
		€­ЁжЁ «Ё§ жЁп ®ЎмҐЄв 
		¤ҐЄ ав®ўл¬Ё Є®®а¤Ё­ в ¬Ё
	*/
	{
		x = x0;
		y = y0;
		recountpolar();
	}
Соседние файлы в папке all