#0
by ИС-2
Есть зоны с множеством входящих в них точек (географические координаты). Как определить среди них крайние, чтобы потом построить многоугольник и очертить зону? Есть какой-то несложный алгоритм, кроме тупого перебора?
#8
by Лодырь
Топикстартер недвусмысленно намекает что у него не плоскость, а поверхность земного шара.
#9
by Lama12
Не совсем в теме, но разве нельзя, для данной задачи, точки с трехмерными координатами представить в виде проекций на 3 плоскости?
#10
by Лодырь
Насколько я понимаю, при стандартной развертке, прямые на плоскости превратятся в кривые на сфере и наоборот.
#17
by dk
нафига внешние пакеты? очень много данных и время поиска критично? можно тупо в 1с 1. выбрать крайнюю точку (максимум или минимум по любой из координат) 2. строить линию к остальным точкам и проверять лежат ли все остальные точки множества (слева или справа от линии) 3. если все точки множества слева или справа, то это тоже крайняя точка - сохраняем и идем дальше 4. если не крайняя, то идем дальше --- тока надо придумать что делать если все точки на одной линии
#18
by Лодырь
Если все оставшиеся на линии - выбираем самую дальнюю от текущей и завершаем работу. Если на первом шаге все лежат на 1 линии - идем в соседний отдел убивать шутника а потом таки включаем самую дальнюю точку и завершаем работу.
#19
by Fragster
а я представил себе алгоритм с преобразованием в полярные координаты, поиск точки с минимальным углом и (если несколько) максимальным расстоянием. Сдвиг обычной системы координат в эту точку, повторение. как только дойдем 2й раз до 1 и той же точки - профит.
#21
by ИС-2
сказали, что там есть. В алгоритме предполагается что фигура выпуклая, а у меня может быть любая. Аналогия с проведением точек в конверте (центральная точка). Задачу я сформулировал не корректно. Мне надо "обтянуть" точки, а не просто выделить крайние. Т.е может получиться и "сосиска" и "полумесяц" и т.д.
#26
by Rie
Сформулируй задачу корректно - и люди к тебе потянутся. (Но тебе это будет уже не нужно - поскольку при правильной формулировке решение будет сразу видно).
#27
by ИС-2
у меня есть понимание того, что хочу. Определить зоны где есть клиенты на карте. Но сформулировать...
#30
by Rie
Август... Опытные телепяты - лечатся от жары на пляжах Египта. и уже кучу алгоритмов предложили. Но, видать, телепатией они не страдают.
#32
by Rie
Попробую догадаться... Построй отрезки между всеми точками. Удали пересекающиеся. Удали внутренние. (Строить _все_ - не обязательно). (Внимательно читай, что пишет).
#33
by vde69
тут есть маленькая загвостка... если у нас 10 000 точек сколько будет отрезков "Построй отрезки между всеми точками" ??? а если точек будет лям :) я реализовывал в 1с триангуляцию на подобных массивах точек :)
#34
by Rie
Тут есть большая загвоздка - а что именно хочет ТС? Насчёт "маленькой загвоздки" - это да. Поэтому на тебя и ссылаюсь. Но пусть сначала хоть какое-то решение найдёт. При малых n. И убедится, что это - то, что ему надо. А то будет искать эффективный алгоритм не для того. ведь не зря примерчики подкидывал.
#38
by bahmet
мдя..судя по рисунку меньше играть в танки надо. Почему внутренние точки сверху удостоились войти в крайние, а внизу нет. Это типа гравитация сверху вниз и нить провисла?))
#39
by NS
Построение выпуклой оболочки обходом Грэхэма Даны N точек на плоскости. Построить их выпуклую оболочку, т.е. наименьший выпуклый многоугольник, содержащий все эти точки. Мы рассмотрим метод Грэхэма (Graham) (предложен в 1972 г.) с улучшениями Эндрю (Andrew) (1979 г.). С его помощью можно построить выпуклую оболочку за время O (N log N) с использованием только операций сравнения, сложения и умножения. Алгоритм является асимптотически оптимальным (доказано, что не существует алгоритма с лучшей асимптотикой), хотя в некоторых задачах он неприемлем (в случае параллельной обработки или при online-обработке).
#40
by vde69
в 90х я использовал поиск по наименьшему углу, не знаю есть такие алгоритмы так сказать академически, но тогда сам придумал и само работало, на XT контур из 10 000 точек строило около минуты, работало :)
#42
by vde69
не совсем, там для каждой точки есть 4 четверти, и в зависимости от ее расположение анализировать нужно максимум 1/2 а идеале 1/4 углов
#45
by Torquader
А если решать задачу последовательно: 1) Берём три точки - получаем треугольник. 2) Последовательно добавляем точки - если точка оказывается внутри фигуры-многогранника, то она внутренняя, если она выходит за какую-то грань, то добавляется два отрезка, если за несколько граней, то происходит спрямление, то есть выкидываются точки, ставшие внутренними.
#47
by Torquader
Так я и не претендую на лучший. Для реализации достаточно, чтобы алгоритм был понятный. P.S. если переходить к тетраэдрам и плоскостям, то можно и в объёме также действовать.
#48
by Лодырь
Уважаемые, а вы таки смогли понять чего хочет топикстартер указывая что он хочет "обтянуть крайние точки, а не просто выделить крайние". Потому что не будет однозначного решения в его случае. Какой из вариантов больше нравится топикстартеру в случае всего лишь 5 точек?
#49
by Torquader
Крайние точки - фигура должна быть выпуклой, то есть решение однозначно. Конечно, если допустить невыпуклые фигуры, тогда все точки получаются крайними, так как их множество дискретно.
#50
by Лодырь
Читай и смотри . Там ясно написано, что он хочет не обязательно выпуклую оболочку ) А критериев не приводится. Сдается мне что ему придется копать в сторону разделов кластерного анализа, а именно построения оболочек кластера (cluster hull)
#52
by Torquader
Видимо, он хочет не "множество", а оптимальный маршрут, чтобы посетить всех клиентов, но это совершенно другая задача. В принципе, если грамотно поставить критерии "правильности" и решать задачу на экстремум функционала, то решение будет найдено.
#53
by ИС-2
сделал по принципу черного ящика. Использовал пакет R. Вот сценарий для выполнения: X<-read.table("//1c/Coordinates/InPutCoord.txt", dec=",", sep = " ") #X<-read.table("D:/R/InPutCoord.txt", dec=",", sep = " ") as.matrix(X) chull(as.matrix(X)) Y<-chull(as.matrix(X)) write(Y, "//1c/Coordinates/ExtremeCoord.txt", 1)
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- получение остатков на складах УТ 10.3
- СКД макет ресурсов (общий итог подвал)
- видео в браузере планшета
- Как добавить сортировку в форму в УТ 11?
- v7: dbf больше 2 гиг как заставить работать?
- План обмена + Правила из конвертации данных.
- ЗУП: Как в корректирующей СЗВ за 2011 год поставить ПНЭД?
- закрытие 23 счета в Бухгалтерии 2.0.
- Отладка WSПрокси
- ocvita barcode вместо activabarcode
- Права usr1cv8 на COM Excel
- OLE на другой машине
- недопустимые символы xml
- СуперПрава в УТ 11
- УФ. Восстановление позиции в динамическом списке, после скрытия строки
- Расшифровка налога на прибыль по статьям затрат в БП 2.0
- Не работает Полнотекстовый поиск в УТ 11
- v8: Материалы в переработку в БП 2.0
- Поступления денежных средств по платёжным картам ОСН/ЕНВД
- Поле Итог в СКД сделать другой текст