Описание используемых структур данных



Краткое описание:
Точка (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