Описание используемых структур данных
Краткое описание:
Точка (point) - две вещественные переменные - координаты
Прямая (line) - три вещественные переменные - координаты вектора нормали и коэффициенты нормального уравнения прямой
Окружность (circle) - точка и вещественная переменная - центр и радиус
Листинг C++
// Точка
class point
{
public:
double x, y;
// дополнительный параметр - индекс точки
int i;
// Создание точки (_x, _y)
point(double _x, double _y)
{
x = _x;
y = _y;
}
// Создание точки (0, 0)
point()
{
point(0, 0);
}
};
// Прямая
class line
{
public:
double a, b, c;
// Создание прямой ax + by + c = 0
line(double _a = 0, double _b = 0, double _c = 0)
{
a = _a;
b = _b;
c = _c;
}
};
// Окружность
class circle
{
public:
point c;
double r;
// Дополнительные данные
double alpha;
// Создание окружности с центром (x, y) и радиусом _r
circle (double x, double y, double _r)
{
c = point(x, y);
r = _r;
}
// Создание окружности с центром p и радиусом _r
circle (point p, double _r)
{
c = p;
r = _r;
}
circle ()
{
circle(0, 0, 0);
}
};
// сравнение двух точек по принципу самая нижняя из самых левых
class less_of_posXY
{
public :
bool operator () (point a, point b)
{
if (abs (a.x - b.x) > eps)
return a.x < b.x;
if (abs (a.y - b.y) <= eps) return false;
return a.y < b.y;
}
};
// равенство двух точек
class equal_point
{
public :
bool operator () (point a, point b)
{
return abs (a.x - b.x) <= eps && abs (a.y - b.y) <= eps;
}
};
07.06.2007, 15:27
По всем вопросам обращаться: rumterg@gmail.com