Re: и вновь прога...
- From
- Vovanius Uryvaeff (2:5020/175.2)
- To
- Viktor Karev
- Date
- 2002-11-19T17:33:57Z
- Area
- RU.ALGORITHMS
From: "Vovanius Uryvaeff" <micro-s@vniiofi.ru>
Tue Nov 19 2002 10:39, Viktor Karev wrote to Egor Tsygvintsev:
>> Дана карта местности, разбитая на участки разной проходимости, причем
>> области разной проходимости это непересекающиеся многоугольники заданные
>> своими вершинами. Необходимо проложить маршрут из точки А в точку В
>> требующий минимального времени.
VK> Наиболее подходящий для данной задачи метод - трасировки лучей.
VK> Выпускаешь из начальной точки во всех направлениях лучи и
VK> фиксируешь фронт фолны через dt.
dt можно посчитать как min(S/v) - где S- расстояние до ближайшего препятствия.
VK> Если два луча пересеклись - из
VK> точки пересечения выпускаешь один луч по среднему направлению.
Если они столкнулись - оба луча удалим.
VK> Если слишком разошлись - добавляешь еще луч, чтобы плотность
VK> лучей оставалась в некоторых пределах.
В прошлом своем письме я вроде начал эту мысль. Теперь продолжу:
Имеет смысл считать сразу весь фронт волны.
Вокруг точки, пока поблизости нет границ, фронт имеет форму окружности:
xx+yy=vt
Когда эта окружность коснется вершины, из вершины пойдет еще один круговой
фронт.
А фронт после преломления будет иметь вид, описываемый уравнениями
неизвестного порядка.
А можно эти две идеи скомбинировать, и аппроксимировать фронт многоугольником,
в вершинах которых известны направления движения лучей.
От предложенной тобой идеи отличается тем, что учитывается еще и возможность
"столкновений" между отдельными лучами.
2ET: И вообще может считать расстояния как S=|x|+|y| ? Проще значительно
получится.
Задача для чего?
Send Email to vovanius2000<yxo>mail. ru
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)