
Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Различные алгоритмы минимизации, реализованные в С++ / all / POINT
.CPP// ” ©«: 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