|
Вопрос по алгоритму определения границы кривой, Возник сложный вопрос и нигде не могу найти ответ! |
|
|
|
Mar 20 2009, 09:54
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 11-09-08
Пользователь №: 40 121

|
Добрый день! Помоги пожалуйста, или хотя бы посоветуйте! Мне стоит задача придумать алгоритм, с помощью которого можно определить только внешнюю границу любой кривой линии, любой любой, и только внешнюю. Внутрь заходить не должны. В наличии только координыты точек исходной кривой! Я сам придумал с нуля четыре алгаритма, все по своему хороши, но меняется какое-то уовие и они подвисают. Посоветуйте что-нибудь, хотя бы где почитать. Буду рад любому ответу! Заранее спасибо! Замечание модератора. Заголовок темы следует давать осмысленный, как того требует п.2.1в Правил форума. Отредактировал. rezident.
|
|
|
|
|
Mar 20 2009, 10:12
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(Prinz @ Mar 20 2009, 12:54)  Мне стоит задача придумать алгоритм, с помощью которого можно определить только внешнюю границу любой кривой линии, любой любой, и только внешнюю. Внутрь заходить не должны. В наличии только координыты точек исходной кривой! Я сам придумал с нуля четыре алгаритма, все по своему хороши, но меняется какое-то уовие и они подвисают. Посоветуйте что-нибудь, хотя бы где почитать. Это стеб?
Причина редактирования: Излишнее цитирование.
|
|
|
|
|
Mar 20 2009, 10:29
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 11-09-08
Пользователь №: 40 121

|
Цитата(Rst7 @ Mar 20 2009, 15:11)  Кривая замкнута, как я понимаю? Сейчас нарисую.
|
|
|
|
|
Mar 20 2009, 13:01
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Prinz @ Mar 20 2009, 12:54)  Мне стоит задача придумать алгоритм, с помощью которого можно определить только внешнюю границу любой кривой линии, любой любой, и только внешнюю. Правильная формулировка задачи - половина решения! Что значит "внешнюю границу"? Кривая, наверное, замкнутая? Если кривая делит плостость (а, плоскость ли?) на "внутренность" и "внешность", то сама она и будет границей. Сложность у Вас, наверное, в том, что кривая имеет "петли". Так ли? В этом случае необходимо обнаружить такие "петли", разбить кривую на несколько (каждая из которых замкнутая и не содержит "петель" -т.е. произвести декомпозицию) и некоторые замкнутые кривые, лежащие целиком "внутри" других кривых, - исключить... Впрочем, алгоритм будет сильно зависить от условия задачи: например, как задана кривая - аналитически, отрезками или нарисована каким-то цветом на рисунке (матрица цветов пикселей, например)... PS. Не заметил, что заданы точки кривой... Навскидку - наметки как разбить алгоритм на два алгоритма: 1) подойти от точки заведомо лежащей вне кривой до упора в кривую 2) обойти вдоль кривой (по часовой стрелке, например), отмечая точки кривой, соприкасающиеся с точкой обхода. К каждому пункту придумать алгоритм - уже легче...
|
|
|
|
|
Mar 21 2009, 08:27
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 11-09-08
Пользователь №: 40 121

|
Вот, как это должно выглядить! Вчера никак не мог на сайт загрузить, он просто не работал у меня! Ещё сложность в том, что кривая задана отрезками и точки между отрезками неравномерны! Тоесть, изменение направление - много точек, движение по прямой - то точек мало! ТОесть они редки! Для обведения по кругу просто кривой уже четыре олгаритма придумал! И метод по касательно может не помочь, так как например в этом напралении модет не быть точек, а линия есть! Всем спасибо за советы. Готов ещё выслушать предложения. А кто может посоветовать какую-нибудь книгу???
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 21 2009, 08:53
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 11-09-08
Пользователь №: 40 121

|
А кто-нибудь знаком с файлом фомата .plt для OziExplorer? Вот в этом файле даны точки кривой от начала до конца. Из него я и считываю. Перерисовал заного! Здесь ещё наиболее сностный вариант! НАчало и конец могут совпадать! Если надо могу ещё более подробно описать. На границе не указал точки, но их должно быть мало. Тоесть наиного меньше чем на основной кривой. Но точность тоже должна быть.
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 21 2009, 08:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 724
Регистрация: 1-05-05
Из: Нью Крыжопыль
Пользователь №: 4 641

|
Вся исследуемая площадь устанавливается, исходя из максимальных и минимальных координат имеющихся точек и, исходя из нужной точности, представляется в виде двухкоординатной равномерной сетки. По трем соседним точкам восстанавливается треугольник. Координаты всех его вершин известны. Определяется его площадь. Если она не равна 0, то точки не лежат на прямой - и можно определить, какие точки сетки попадают в него, а какие - нет. В матрицу точек сетки записываем признак попадания-непопадания. Берем следующий треугольник, модифицируем матрицу. Остановка процесса по исчерпанию количества точек кривой. Значения признаков в матрице, "окруженные" признаками противоположного значения, инвертируются. Впрочем, наверное, это сложно для вас. Бросьте это безнадёжное дело.
|
|
|
|
|
Mar 21 2009, 09:04
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 11-09-08
Пользователь №: 40 121

|
Цитата(zzzzzzzz @ Mar 21 2009, 13:54)  Впрочем, наверное, это сложно для вас. Бросьте это безнадёжное дело.  Не надо оскарблять. Я тоже могу. Во-вторых это может не пракатить! Три соседнии точки которые вы говорите могут быть в начале и конце массива координат. В - третьих я говорю. Точки может не быть, а прямая линия там проходить будет и ваш алгоритм просто её не заметит. Уже так нагревался. Обратите внимание на рисуночек. Это не просто графика. Это работа с координатами GPS. Я уже сделал четыре программы на векторном анализе. НЕ знаю на сколько это сложно для вас? Но при определённых условия анализ не проходит. И ваш метод при большом треке, например Москва - Владивосток, просто не прокатит. Памяти не хватит!
|
|
|
|
|
Mar 21 2009, 09:23
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 11-09-08
Пользователь №: 40 121

|
Цитата(zzzzzzzz @ Mar 21 2009, 14:06)  Это не "оскарбление", а чистая констатация факта - вы не можете даже условия задачи сформулировать нормально. И, судя по аргументации, эту задачу не сможете решить ближайшие несколько лет  . Хотя, удачи вам, конечно. Я же Вашими способностями умственными не интересуюсь. Мне нужен совет,а не Ваши шуточки. А решения же четыре есть, за неделю! И ещё прочитай внимательнее , что я написал. Там указана вся специфичность задачи.
Причина редактирования: Излишнее цитирование.
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|