AviaSkins.Forums

AviaSkins.Forums (http://forum.aviaskins.com/index.php)
-   Не самолетом единым ... (http://forum.aviaskins.com/forumdisplay.php?f=22)
-   -   Генерация маршрутов (http://forum.aviaskins.com/showthread.php?t=906)

JGr124_boRada 15.09.2009 18:11

По большому счету - никто ничего давать не хочет. Пообщался я с парой проектов. Мне, который 5 лет занимается проектами, куски моего кода на половине серверов, говорят "А что с этого буду иметь..." Аж противно стало, до чего люди с короткой памятью.

LePage 15.09.2009 21:32

Что-то я не уловил, если пиксели на map_t.tga с шагом 200 м то почему же координаты точек маршрута не кратны 200-м?
500.00 43500.00 20.00 0 70 5.555555820465088
6300.00 43500.00 20.00
6500.00 43700.00 20.00
:I'm_thinking:


И еще, просто интересно, а с ботами как быть предполагается, или уж совсем без них?

deSAD 15.09.2009 22:34

Цитата:

Сообщение от LePage (Сообщение 32227)
Что-то я не уловил, если пиксели на map_t.tga с шагом 200 м то почему же координаты точек маршрута не кратны 200-м?

Дороги "нарезаются" отрезками по 200 м, но точка маршрута м. б. в любом месте отрезка.

JGr124_boRada 15.09.2009 23:29

Офигел чтоль... :)
6500 - 6300 = 200
43700 - 43500 = 200
Это от начальной точки может быть по всякому.
А то что 500 а не 400 - так и надо. Отсчет то полпиксела учитывает, видимо. Т.е. если линия идет посередине квадратного пиксела ( 200х200м) то как раз смещение на половину.

Боты обязательно.

LePage 16.09.2009 07:15

Цитата:

...Отсчет то полпиксела учитывает, видимо...
Вот это и интересовало, спасибо. т.е поправочка нужна при трассировке - сдвиг начала координат (100,100).

LSA 16.09.2009 07:20

Добавлю и я свои 5 копеек... :)
Проблема прокладки маршрута красиво решается с использованием теории графов. Припоминаю, что в свое время на третьем курсе я писал курсовую работу - программу на PL/1, которая реализовывала алгоритм нахождение пути в лабиринте. Вкратце суть сводится к следующему: лабиринт описывается в виде матрицы графа, затем производится "взвешивание" этого графа относительно конечной точки маршрута, после чего берется начальная точка и маршрут получается практически сам собой, простым "подъемом" по взвешенному дереву графа (по сути при формировании пути останется решать только задачу выбора пути из двух или более вариантов).
Как я понимаю, отрезки и узловые точки дорожной сети тем или иным способом вы уже получили, т.е. налицо та самая матрица. Ребра графа в данном случае могут хранить отрезки дорог (в общем случае это ломаные линии) между перекрестками, что даст возможность прокладывать маршруты не только по критерию "самый короткий путь".
Думаю, что этот метод и реализован в редакторе :)

JGr124_boRada 16.09.2009 07:25

Трассировка tga? Это ползадачи, надо еще мосты привязывать. У каждого моста свой номер и координаты.
Нужен алгоритм итоговый...

Хотя.. вроде уже понимаю как надо сделать.
Спасибо LSA, подтолкнул мысли - надо брать отрезки, а не вершины для расчета..
Если коротко:
Надо найти все отрезки дорог в один список (X1,Y1,I1 ;X2,Y2,I2) , где I - идентификатор точки.
Вот это один отрезок:
[[7300.00, 50900.00, 20.00], [7500.00, 50700.00, -42.00]]
У нас будет один список с такими отрезками, его получить надо с mis
Делаем в ПН "штриховку" 1 или более длииииными маршрутами
Утилитой формируем список - удаляем дубли. Готов тхт файл (или в другом виде)
При генерации находим ближайшую вершину, Берем отрезок и пошли перебором, взяли конец - нашли начало другого, + в маршрут. При нахождении "перекрестка" определяем отрезок, конечная точка которого ближе к таргет, берем его и пошли дальше. Если последняя координата не повторяется - это конец дороге.
Прикинул - это будет достаточно быстро. Ну и так далее, дело техники.
Утилиту по парсеру *.mis кто-то может собрать по быстрому? Её назначение парсинг, удаление дублей в том числе и (x,y) = (y,x)
Вывод в формате

a b
b c
c d
с а
с f
f b
.........

6300.00 51700.00 20.00 6500.00 51700.00 20.00
6500.00 51700.00 20.00 7300.00 50900.00 20.00
7300.00 50900.00 20.00 7500.00 50700.00 -42.00
.........

Вуаля. Обработку этого файла уж каждый проект будет делать по своему. Могу себе утилитку сделать и на Питоне, но если будет *.exe, это будет универсальный парсер маршрутов для общего пользования.

список только точек сам по себе бесполезен

deSAD 16.09.2009 11:50

Цитата:

Сообщение от JGr124_boRada (Сообщение 32237)
Трассировка tga? Это ползадачи, надо еще мосты привязывать. У каждого моста свой номер и координаты.

Ндык координаты мостов (вернее, начала и конца моста, как оне, собственно и отражаются в маршруте) содержатся в outWing.txt (тот, который получается на выходе java -jar Act.jar extract ), а номер ... зачем он?

JGr124_boRada 16.09.2009 12:26

да уже ненадо. А вобще, номер пишется как -XX. Я так понял.
7500.00 50700.00 -42.00

Karabas-Barabas 16.09.2009 12:49

Цитата:

Сообщение от JGr124_boRada (Сообщение 32237)
...
Утилиту по парсеру *.mis кто-то может собрать по быстрому? Её назначение парсинг, удаление дублей в том числе и (x,y) = (y,x)
Вывод в формате

a b
b c
c d
с а
с f
f b
.........

6300.00 51700.00 20.00 6500.00 51700.00 20.00
6500.00 51700.00 20.00 7300.00 50900.00 20.00
7300.00 50900.00 20.00 7500.00 50700.00 -42.00
.........
...

Вроде же делал такую для тебя неск. лет назад на Питоне.
Поищу.

JGr124_boRada 16.09.2009 14:00

А... Ты наверно из Мурманска :)
Я ж сказал - для всех :)
Зачем другим ставить для одной утилитки питон?
На питоне то я и сам сделаю, всё что нужно уже есть. Наверно на выходных, как с маршрутами для ботов закончу.

Karabas-Barabas 16.09.2009 16:46

Цитата:

Сообщение от JGr124_boRada (Сообщение 32247)
А... Ты наверно из Мурманска :)
Я ж сказал - для всех :)
Зачем другим ставить для одной утилитки питон?
На питоне то я и сам сделаю, всё что нужно уже есть. Наверно на выходных, как с маршрутами для ботов закончу.

Я про сортировщик.
А про генератор маршрутов, "для всех" нужен только алгоритм - кто на чем хочет, на том закодирует и прикрутит к своему остальному софту.

П.С. А на Питоне тоже можно делать исполняемые файлы .exe

LePage 16.09.2009 20:59

Хм, а парсер лога сервера нигде не завалялся? На чем угодно. В декомпилировании несилен.... :(

JGr124_boRada 16.09.2009 21:06

Хм,ну в каждом проекте он есть в составе командера или демона. Как отдельной программы - не встречал. Ведь какую-то функцию парсер должен выполнять в итоге. В реале он везде как модуль в составе софта.

LePage 16.09.2009 21:07

Цитата:

Сообщение от LSA (Сообщение 32236)
Добавлю и я свои 5 копеек... :)
Проблема прокладки маршрута красиво решается с использованием теории графов. Припоминаю, что в свое время на третьем курсе я писал курсовую работу - программу на PL/1, которая реализовывала алгоритм нахождение пути в лабиринте. Вкратце суть сводится к следующему: лабиринт описывается в виде матрицы графа, затем производится "взвешивание" этого графа относительно конечной точки маршрута, после чего берется начальная точка и маршрут получается практически сам собой, простым "подъемом" по взвешенному дереву графа (по сути при формировании пути останется решать только задачу выбора пути из двух или более вариантов).
Как я понимаю, отрезки и узловые точки дорожной сети тем или иным способом вы уже получили, т.е. налицо та самая матрица. Ребра графа в данном случае могут хранить отрезки дорог (в общем случае это ломаные линии) между перекрестками, что даст возможность прокладывать маршруты не только по критерию "самый короткий путь".
Думаю, что этот метод и реализован в редакторе :)

Это будет работать, если дороги связаны в один независимый граф, а может быть ситуация когда существует несколько независимых графов (лабиринт в лабиринте, с изолированным входом/ выходом), карты же обрезаны. Нужен еще алгоритм вычленения независимых графов из массива отрезков.
(я эту теорию уже благополучно забыл :(, хотя аналогичную курсовую делал, поиск всех возможных путей в графе, с исключением циклов)

з/ы/ Перечитал и подумал мож и не так все сложно. Ведь все предполагается ИМХО для проекта когда колонна движется из НАЧАЛЬНОЙ точки самой первой миссии - значит вход в лабиринт есть и он один. К остальным независимым маршрутам (если они существуют) наземка поедет по «бездорожью». :(
Хотя нет - все равно придется искать ближайшую дорогу. :)

LePage 16.09.2009 21:09

Цитата:

Сообщение от JGr124_boRada (Сообщение 32259)
Хм,ну в каждом проекте он есть в составе командера или демона. Как отдельной программы - не встречал. Ведь какую-то функцию парсер должен выполнять в итоге. В реале он везде как модуль в составе софта.

А ссылочку на подобный исходник мона? В личку или по аське 404-132-377, если что. (вообще говоря интересует все что сервер там пишет, интерпретация событий, все ж ситуации я сам не смогу вооспроизвести :()

JGr124_boRada 16.09.2009 23:35

Вложений: 1
Да канечно. Вот на Питоне

LePage 19.09.2009 10:00

Спасибо!!!

JGr124_boRada 23.09.2009 08:24

Получилось в общем-то. Запустил на ГФ.
Есть небольшие погрешности - при прокладывании маршрутов иногда срезаются углы. Чем точнее проложить маршруты для создания базы, тем точнее будет результат в миссии.

Чтоб не создавать отдельную тему:
Есть отдельный мод для "S" ? Нужно чтоб лог был(трекописание нужно обязательно), а всё о вражине отключено.


Текущее время: 20:27. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot