(C) Кручинин Александр, 2010. http://vidikon.com support@vidikon.com
(C) Российский фонд фундаментальных исследований, 2010.


ImagePak
Библиотека для обработки и распознавания графических изображений
Версия 1.1
  1. Назначение
  2. Geometry
  3. Img
  4. Img_transf
  5. Math_a
  6. Geoman
  7. Detect_img
  8. Contour
  9. Grid
  10. Histogram
  11. Segment
  12. Comparison
  13. Дополнительно
Geometry

     Описывается версия Geometry 1.02. Основные геометрические функции.
Изменения (1.02):
- добавлена аппроксимация методом наименьших квадратов Approximation;
- исправлена функция RToLine.


Структура F_LINE

struct F_LINE
{
         int k1;
         int b;
         double b1,b2;
};

     Описывает линию, k1 – резерв, назначение остальных параметров определяется в зависимости от параметра b. При b=1 y=b1*x+b2, при b=2 x=b1*y+b2.

Структуры C_POINT и C_POINTd

struct C_POINT
{
         int x,y;
};

struct C_POINTd
{
         double x,y;
};

     Описание точки в целом и десятичном формате.

Структуры FOUR_FIG_P и FOUR_FIG_Pd

struct FOUR_FIG_P
{
         C_POINT p[4];
};

struct FOUR_FIG_Pd
{
         C_POINTd p[4];
};

     Структуры описывают четырёхугольники в целом и дробном формате при помощи 4 точек, расположенных в следующем порядке:



Структура FOUR_FIG_L

struct FOUR_FIG_L
{
         F_LINE l[4];
};


     Структура описывают четырёхугольник с помощью 4 линий, расположенных в следующем порядке:


Функции MakeLine

F_LINE MakeLine(double x1,double y1,double x2,double y2);
F_LINE MakeLine(C_POINT p1,C_POINT p2);
F_LINE MakeLine(C_POINTd p1,C_POINTd p2);

     Создают линии из точек, представленных в различном формате.

Функция MakeLineFromPolar

F_LINE MakeLineFromPolar(C_POINTd p1,double f);

     Создаёт линию проходящую через точку p1 и наклоненную под углом f.

Функции FindPointContinue и FindPointContinue_

C_POINTd FindPointContinue(C_POINTd p1,C_POINTd p2,F_LINE line,double size);
C_POINTd FindPointContinue_(C_POINTd p1,C_POINTd p2,F_LINE line,double size);

     Функции по наличию двух точек на известной прямой откладывают от одной из точек расстояние size в одном из двух направлений. Функция возвращает точку, являющейся продолжением линии line построенное ранее между точками p1 и p2 и возвращает координаты точки, которая является продолжением линии p1 и p2 от точки p1. Поясняющий рисунок (a) FindPointContinue, (b) FindPointContinue_:


Функция Intersection

int Intersection(F_LINE f1,F_LINE f2,double &x,double &y);

     Функция находит пересечение линий f1 и f2, возвращает точку в x и y. При успешном выполнении функция возвращает 0 и возвращает 1, если входные линии практически параллельны.

Функция LengthLine

double LengthLine(double x1,double y1,double x2,double y2);

     Функция возвращает расстояние между двумя точками на плоскости.

Функции MakePolarR и MakePolarF

float MakePolarR(float x,float y);
float MakePolarF(float x,float y);

     Функции предназначены для перевода из декартовой системы координат в полярную. MakePolarR возвращает расстояние, а MakePolarF возвращает угол.

Функция DirectPoint

bool DirectPoint(C_POINT*p,int all,unsigned char flags);

     Функция предназначена для проверки последовательности точек на возможность их обхода по часовой или против часовой стрелки.
Параметры:
p - указатель на последовательность точек C_POINT;
all - общее количество точек меньшее 100;
flags - флаги, DIRECT_HOUR_ARROW - проверка по часовой стрелке, DIRECT_HOUR_ARROW_A - проверка против часовой стрелки.
     Будьте внимательны при работе с перевёрнутым изображением IMG.


Функции PointID и PointDI

C_POINTd PointID(C_POINT p);
C_POINT PointDI(C_POINTd p);

     Предназначены для перевода точек из целого формата в дробный и наоборот.

Функции RToLine

double RToLine(F_LINE f,double x,double y);
double RToLine(F_LINE f,C_POINTd p);

     Функции возвращают расстояние от точки на плоскости до прямой f.

Функция Average

C_POINTd Average(C_POINTd p1,C_POINTd p2);

     Функция возвращает среднюю точку между двумя входными.

Функция MakeParallelLine

F_LINE MakeParallelLine(F_LINE line,C_POINTd point);

     Функция возвращает линию параллельную line и проходящую через точку point.

Функция FoundInclination

double FoundInclination(F_LINE line,F_LINE line1);

     Функция возвращает угол в радианах между двумя линиями.

Функция TurnLine

F_LINE TurnLine(F_LINE f,double alfa,C_POINTd point);

     Функция возвращает линию, повёрнутую относительно f на угол alfa и проходящую через точку point.

Функция Approximation

F_LINE Approximation(int *array,int all_elem);

     Для массива точек array с максимальным количеством элементов all_elem функция возвращает аппроксимированную прямую, считая осью Ox значения индексов массива (0, 1, 2...), а осью Oy - значения элементов массива.