| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Как найти точку перегиба полилинии |
| Автор: zvyagaaa 8.5.2009, 19:18 | ||
| Здравствуйте уважаемые. Разбираюсь с рисованием и вычислением пути от точки до точки с препятствиями В принципе получается, но есть одно но - массив точек получившейся линии имеет вид
т.е. идет рисование по клеточкам. Все бы ничего, но надо в точках, где линия меняет направление с горизонтального на вертикальный и наоборот , например, точки с координатами 105;72, 160;50 установить метки. Вот подкоркой понимаю, что надо просто массив координат отсортировать - но как реализовать не пойму. Выручайте, пожалуйста. |
| Автор: Mechanic 8.5.2009, 23:12 | ||
| А не нужно ничего сортировать. Просто нужно исследовать массив последовательно в направлении рисования линии, анализируя напрвление движения. Например
Это не самый оптимальный код, зато наглядный. А что касается "вычислением пути от точки до точки с препятствиями", то тут не совсем ясно, ищется ли маршрут, или измеряется длина уже готового пути. Если ищется маршрут, то можно использовать алгоритм A*, или подобный. А если мерять длину, то принцип тот же - последовательно складывать длины отрезков. |
| Автор: AntonN 9.5.2009, 00:50 |
| следить за сменой направления движения, банальное if(x_old<>x_new) наверное подойдет |
| Автор: zvyagaaa 9.5.2009, 06:16 |
| Mechanic, огромное спасибо за код, это именно то, что мне нужно. А ищу путь методом Ли (волновой алгоритм), измерять пройденный путь не требуется пока. Хотя тут алгоритм для меня прозрачный |