Xcode
Не знаю, насколько полезна информация в плане задачи для перемещающихся препятствий, но в бытность свою изучения САПР/ТАПР, наряду с волновыми учили т.н. лучевой алгоритм трассировки печатных плат. (Может название метода поможет?)
Если учебник или конспекты найду... (хотя 15 лет уже прошло
)
Цитата:
уравнение прямой? и прасчет каждой последующей пары (X,Y), с проверкой на существование преграды?
|
Наверное, да. А зачем пробегать(перебирать) всю прямую? Это у вас имхо и получится а-ля волновой.
Примерный алгоритм (к сожалению, без мат. аппарата):
1) Строим уравнение прямой (отрезка) от начального пункта (А) до конечного (В)
2) проверяем
преграды(учитывая их размеры?) на предмет попадания на эту прямую.
3) Если преграда на прямой, разбиваем отрезок на 2 - до преграды (А-С), и после (С-В).
4) Пытаемся преграду обойти следующим способом: сдвигаем точку С в сторону по перпендикуляру к изначальному отрезку (А-В) на расстояние примерно равное размеру преграды. (пробуем оба варианта, и "вправо" и "влево").
5) Далее каждый отрезок обрабатываем отдельно. см. п. 1. (рекурсией, наверное удобно).
Цитата:
а делать большой массив 640х480 для поля 640px - 480px - имхо не рационально....
|
Достаточно по 2 бита на точку (4 состояния: пусто, преграда, волна четная, волна нечетная). Если жалко памяти

, создаете
битовое поле (массив будет в 4 раза меньше).
В свое время при реализации волнового алгоритма на БК0010 решили проблему недостатка памяти, храня как саму матрицу с преградами, так и волны в момент прохождения, в экранной памяти цветами точек.
Насчет прогнозирования преград - в руки ко мне попадал учебник по что-то типа "военной теории вероятности": поиск/преследование подвижных/неподвижных целей с помощью подвижных/неподвижных наблюдателей/преследователей, проходов в минных полях, уход от поиска и т.п.