|
@@ -1,5 +1,5 @@
|
|
|
## Road Searcher
|
|
|
-####Структура программы:
|
|
|
+#### Структура программы:
|
|
|
+ img.h - модуль для работы с картинками, пока поддержка только BMP формата.
|
|
|
+ graphmap.h - модуль построения графа по картике и нахождение в нем маршрутов.
|
|
|
+ roadSearcher.cpp - главный код
|
|
@@ -11,12 +11,12 @@ ____
|
|
|
Абстрактный класс картинки. Представляет собой структуру вроде двумерного массива, в каждой ячейке которого может хранится любая информация, которую можно задавать и менять.
|
|
|
|
|
|
|
|
|
-> ###Cвойства: <br><br>
|
|
|
+### Cвойства: <br><br>
|
|
|
> <b> int width, height; </b> - широта и высота <br>
|
|
|
> <b> Row <T\> *data; </b> - массив строк данных, которые хранятся в ячейке<br>
|
|
|
<b> Settings settings; </b> - настройки для разных типов данных (если это будет работа с картинкой)
|
|
|
|
|
|
-> ###Методы: <br><br>
|
|
|
+### Методы: <br><br>
|
|
|
> <b> Img(int width, int height) </b>- конструктор с укозанием широты и высоты <br>
|
|
|
><b> Img() </b>- конструктор по умолчанию <br>
|
|
|
> <b> init() </b> - инициализация картинки(данных) по широте и высоте <br>
|
|
@@ -25,10 +25,10 @@ _____
|
|
|
###### template <class T\> class Row
|
|
|
Вспомогательный класс, для реализации структуры 2х мерного массива с данными
|
|
|
|
|
|
-> ###Cвойства: <br><br>
|
|
|
+### Cвойства: <br><br>
|
|
|
> <b>int width;</b> - ширина строки<br>
|
|
|
<b> T** pixel; </b> - ячейка с хранимыми данными<br><br>
|
|
|
-> ###Методы: <br><br>
|
|
|
+### Методы: <br><br>
|
|
|
> <b>Row()</b> - конструктор по умолчанию<br>
|
|
|
> <b> Row(int width)</b> - конструктор с шириной, инициализация по ширине<br>
|
|
|
> <b> T* operator[](int n)</b> - перегрузка оператора [] для возможности обращения к каждой ячейке данных<br>
|
|
@@ -38,12 +38,12 @@ _____
|
|
|
_____
|
|
|
###### class Pixel
|
|
|
Хранит информацию о пикселе картинки( параметр для класса Img) <br>
|
|
|
->###Cвойства:<br><br>
|
|
|
+### Cвойства:<br><br>
|
|
|
int r; - красный цвет<br>
|
|
|
int g; - зелены цвет<br>
|
|
|
int b; - синий цвет<br>
|
|
|
int a; - канал<br>
|
|
|
-> ###Методы:
|
|
|
+### Методы:
|
|
|
> конструктор (r, g, b),<br> конструктор (), <br>конструктор (r, g, b, a)<br>
|
|
|
_____
|
|
|
##### Структура settings - для прописания настроек картинки
|
|
@@ -70,13 +70,13 @@ _____
|
|
|
};
|
|
|
##### Класс BMP, наследник Img c параметром Pixel
|
|
|
|
|
|
->###Cвойства: что и у IMG
|
|
|
-> ###Методы:
|
|
|
+### Cвойства: что и у IMG
|
|
|
+### Методы:
|
|
|
> <b>void read()</b> - считывание bmp картинки<br>
|
|
|
> <b>void write()</b> - запись bmp картинки <br>
|
|
|
> BMP() {} - конструктор по умолчанию;
|
|
|
_____
|
|
|
-###Приминение:
|
|
|
+### Приминение:
|
|
|
|
|
|
BMP img;
|
|
|
cout << "Start read...";
|
|
@@ -91,7 +91,7 @@ ___
|
|
|
##### class Node
|
|
|
|
|
|
|
|
|
-> ###Cвойства: <br><br>
|
|
|
+### Cвойства: <br><br>
|
|
|
<b>bool vizited;</b> - посещен ли узел
|
|
|
<b>int w; </b>- вес узла (или его возвышенность)<br>
|
|
|
<b>int distation;</b> - расстояние до нужной точки (или выхода)<br>
|
|
@@ -100,7 +100,7 @@ ___
|
|
|
<b>Position pos; </b>- позиция узла<br>
|
|
|
<b>Node *branches[8];</b> - соседние узлы<br>
|
|
|
|
|
|
-> ###Методы: <br><br>
|
|
|
+### Методы: <br><br>
|
|
|
> <b> void calcWeight</b> - подсчет веса узла <br>
|
|
|
> <b>calcDistation(Node previos)</b> - рассчет расстояния относительно переданного предыдущего узла<br>
|
|
|
> <b>operator < (const Node &v2) const</b> - перегрузка операторов больше меньше, для очереди с приорететом <br>
|
|
@@ -111,15 +111,15 @@ ____
|
|
|
##### class Graph наследник Img (чтобы была возможность обратится к каждому узлу через индексы)
|
|
|
|
|
|
|
|
|
-> ###Cвойства: <br><br>
|
|
|
+### Cвойства: <br><br>
|
|
|
<b>BMP map;</b> - картина на основе которой строится граф<br>
|
|
|
<b>Position start;</b> - позиция откуда начнется поиск<br>
|
|
|
-> ###Методы: <br><br>
|
|
|
+### Методы: <br><br>
|
|
|
> <b> Graph(BMP map)</b> - конструктор дерева по картинке (собирает из картинки граф)<br>
|
|
|
> <b> calcdijkstra(Position start)</b> - рассчет расстояний до каждого узла дерева от точки start<br>
|
|
|
> <b> drowRoad(Position end)</b> - рисует дорогу от начальной точки до точки end;<br>
|
|
|
|
|
|
-###Приминение:
|
|
|
+### Приминение:
|
|
|
|
|
|
BMP img;
|
|
|
cout << "Start read...";
|
|
@@ -146,6 +146,6 @@ ____
|
|
|
}
|
|
|
### Результат для кривой дракона:
|
|
|
### Лабиринт:
|
|
|
-<img src = "test29.bmp" width = '400px'>
|
|
|
+<img src = "http://git.fl8.ru/Babycar/RoadSearcher/test29.bmp" width = '400px'>
|
|
|
### Выход (зеленая линия):
|
|
|
-<img src = "output29.bmp" width = '400px'>
|
|
|
+<img src = "http://git.fl8.ru/Babycar/RoadSearcher/output29.bmp" width = '400px'>
|