![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]()
Посмотрите ещё в сторону алгоритма A* (А стар) Ваша задача напоминает компьютерную игру, а алгоритм А* чаще всех используется для поиска пути в компьютерных играх. Наверное, не случайно. Возможно алгортм А* более эффективный раз его применяют чаще всех. Особенно, если объектов, которым нужно расчитать путь, несколько десятков или сотен.
|
![]() |
![]() |
![]() |
#12 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Посмотрел ... Из того, что я понял, я могу из точки {x0;y0} брать соседние, и смотреть в какой точке будет наименьшая разница координат с точкой {x;y}. И так до тех пор, пока не доберусь до пункта назначения. С такой реализацией можно обойтись без общей матрицы координат. Получается эдакий вариант жадного алгоритма.
И в принципе, для моей задачи такой метод тоже подходит. Он даже возможно будет проще уравнения прямой. Но я немного отойду от темы, и пройдусь по некоторым моментам ... 1. Подобная реализация пришла мне в голову исходя из анимации на странице статьи в википедии. 2. Я так и не понял, как оценивать расстояние с учётом препятствий (в мою задачу это не входит), я не зря упомянул жадный алгоритм.
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#13 | ||
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]() Цитата:
Цитата:
Подпись ? Не, не слышал ...
|
||
![]() |
![]() |
![]() |
#14 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Чёто я сейчас прозрел ... У меня из этого получился волновой алгоритм без учёта препятствий. Картинка выравнивается по оси Y, двигаясь по кратчайшему пути к оси X по диагонали (45 градусов), а оставшийся маршрут держит прямой путь по оси X.
Вот код: Код:
После вызова этой функции результат выбрасывается в location и в позицию контрола. Все данные варятся в глобалке класса. Что тут нужно поправить ?
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#15 | |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
![]() Цитата:
Видео в архиве |
|
![]() |
![]() |
![]() |
#16 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Хорошо ... А если я вдруг захочу, что бы моя переменная destination стала вдруг меняться ?
Перед каждым приращением пересчитывать приращение норм будет ?
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#17 |
Участник клуба
Регистрация: 17.05.2011
Сообщений: 1,660
|
![]() |
![]() |
![]() |
![]() |
#19 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Но всё же, я хочу разобраться, почему эта функция в итоге даёт не прямую, а сначала выравнивает по ближайшей оси ...
Код:
Передавая привет Валерию: А вообще, я вижу в этом движение по гипотенузе, упрощённую реализацию A* (наименьшая стоимость, оценивается расстоянием), а так же частный случай волнового алгоритма (там тоже соседей опрашивают). Вот мне интересно: почему это не работает как предполагается ? Оффтопп: программист предполагает, а компьютер располагает.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 13.03.2018 в 11:36. |
![]() |
![]() |
![]() |
#20 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
а так все верно. САМАЯ ближайшая (первая) точка ВСЕГДА будет лежать на ближайшей оси (кроме случая РАВНОудаленных осей, т.е. диагонали ) и только следующая итерация(накопление НЕЦЕЛОГО <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 |