|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.03.2018, 08:30 | #11 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Посмотрите ещё в сторону алгоритма A* (А стар) Ваша задача напоминает компьютерную игру, а алгоритм А* чаще всех используется для поиска пути в компьютерных играх. Наверное, не случайно. Возможно алгортм А* более эффективный раз его применяют чаще всех. Особенно, если объектов, которым нужно расчитать путь, несколько десятков или сотен.
|
11.03.2018, 23:56 | #12 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Посмотрел ... Из того, что я понял, я могу из точки {x0;y0} брать соседние, и смотреть в какой точке будет наименьшая разница координат с точкой {x;y}. И так до тех пор, пока не доберусь до пункта назначения. С такой реализацией можно обойтись без общей матрицы координат. Получается эдакий вариант жадного алгоритма.
И в принципе, для моей задачи такой метод тоже подходит. Он даже возможно будет проще уравнения прямой. Но я немного отойду от темы, и пройдусь по некоторым моментам ... 1. Подобная реализация пришла мне в голову исходя из анимации на странице статьи в википедии. 2. Я так и не понял, как оценивать расстояние с учётом препятствий (в мою задачу это не входит), я не зря упомянул жадный алгоритм.
Подпись ? Не, не слышал ...
|
12.03.2018, 00:33 | #13 | ||
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Цитата:
Цитата:
Подпись ? Не, не слышал ...
|
||
12.03.2018, 03:15 | #14 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Чёто я сейчас прозрел ... У меня из этого получился волновой алгоритм без учёта препятствий. Картинка выравнивается по оси Y, двигаясь по кратчайшему пути к оси X по диагонали (45 градусов), а оставшийся маршрут держит прямой путь по оси X.
Вот код: Код:
После вызова этой функции результат выбрасывается в location и в позицию контрола. Все данные варятся в глобалке класса. Что тут нужно поправить ?
Подпись ? Не, не слышал ...
|
12.03.2018, 09:12 | #15 | |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
Цитата:
Видео в архиве |
|
12.03.2018, 10:35 | #16 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Хорошо ... А если я вдруг захочу, что бы моя переменная destination стала вдруг меняться ?
Перед каждым приращением пересчитывать приращение норм будет ?
Подпись ? Не, не слышал ...
|
12.03.2018, 14:05 | #17 |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
|
13.03.2018, 11:32 | #19 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Но всё же, я хочу разобраться, почему эта функция в итоге даёт не прямую, а сначала выравнивает по ближайшей оси ...
Код:
Передавая привет Валерию: А вообще, я вижу в этом движение по гипотенузе, упрощённую реализацию A* (наименьшая стоимость, оценивается расстоянием), а так же частный случай волнового алгоритма (там тоже соседей опрашивают). Вот мне интересно: почему это не работает как предполагается ? Оффтопп: программист предполагает, а компьютер располагает.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 13.03.2018 в 11:36. |
13.03.2018, 12:21 | #20 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
а так все верно. САМАЯ ближайшая (первая) точка ВСЕГДА будет лежать на ближайшей оси (кроме случая РАВНОудаленных осей, т.е. диагонали ) и только следующая итерация(накопление НЕЦЕЛОГО <0.5 ) смещения может привести к НЕНУЛЕВОМУ смещению по "дальней" оси. позицию надо рассчитывать ВСЕГДА от начальной точки (точки смены направления движения). 00.PNG вторая точка окажется лучшей для движения по прямой соединяющей текущую(ее САМУ) и конечную, но ... это совсем ДРУГАЯ прямая. и только когда прямая соединяющая ТЕКУЩУЮ и конечную точки "доcтигнет" диагонали начнется движение СТРОГО по ней.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 13.03.2018 в 12:47. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
JavaScript:движение объекта по траектории | Ayanami | Помощь студентам | 8 | 18.11.2014 21:45 |
Движение объектов по траектории | Vladlena | Общие вопросы C/C++ | 0 | 19.05.2013 18:38 |
Движение объекта по квадратной траектории | oblomok | C# (си шарп) | 5 | 08.07.2012 23:13 |
Движение объекта по искривленной траектории | ZvEr_HaCkEr | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 6 | 25.06.2011 05:36 |