powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск маршрута vba и dwg
25 сообщений из 101, страница 1 из 5
Поиск маршрута vba и dwg
    #38811297
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Задачка возможно для профи не стоит выделенного яйца.
Есть Excel и Nanocad.

В dwg начерчен лабиринт - здание с коридорной системой.
Нужно по данным Excel построить маршрут от точи А в точку Б не пересекая стены и лучше по осям коридоров.
Изменение направления маршрута под пока только под прямым углом.

Выполняем следующее:
1. Обрисовываем коридоры прямоугольниками, указывая точки доступных для перемещения областей,
при этом в Excel формируем таблицу координат с полями: ID,x1,y1,x2,y2,x3,y3,x4,y4,
тип данный vba:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Type NcAreasSQ 'тип разрешенная область
    a1 As NcXYZ
    a2 As NcXYZ
    a3 As NcXYZ
    a4 As NcXYZ
    iD As Integer
End Type


2. Указываем начальную и конечную точку маршрута (для упрощения уже внутри коридора)
тип данный vba:
Код: vbnet
1.
2.
3.
Public Type NcXYZ 'координаты
    x As Double: y As Double: z As Double
End Type


3. Формируем начальный вектор движения для каждой оси из значений -1,0,1
тип данный vba:
Код: vbnet
1.
2.
3.
Public Type NcVector
    x As Integer: y As Integer
End Type


4. Задаем шаг приращения и множитель (при использовании масштабируемых чертежей)
5. Формируем массив с координатами точек смены маршрута
6. Рисуем маршрут в dwg полилинией

Задача 5 в различных вариантах решений вызвала проблемы, даже если не говорить об оптимизации.


все хорошо пока координаты точки после приращения по вектору в разрешенной текущей зоне:
ta2.x <= a2.x <= ta1.x And ta2.y <= a2.y <= ta1.y
где a2 - текущая исследуемая точка,
ta1 координаты с минимальными значениями по осям x,y текущей разрешенной области
ta2 координаты с максимальными значениями по осям x,y текущей разрешенной области

если же следующая точка выходит за пределы, возникает вопрос: куда повернуть?
Поворачивал и в стороны основного направления от точки А точке Б - появляется проблема при необходимости повернуть в другую сторону, чтобы выйти из лабиринта к целевой точке.
Поворачивая случайно (поочередно перебирая направления) совсем запутался в том куда идет вектор и есть ли решение для данного направления, непонятно до какой точки предыдущего поворота вернуться для поиска нового решения.

Подскажете пожалуйста пример кода не слишком сложный для построения точек (координат маршрута)
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38811317
Михаил Ч.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BobgosНужно по данным Excel построить маршрут от точи А в точку Б не пересекая стены
по dwg ничего подсказать не могу, но по нахождению выхода из лабиринта можно использовать волновой алгоритм.
Если лабиринт перенести в Excel, то решение можно достаточно легко сделать волновым алгоритмом.
Как пример: https://yadi.sk/i/f0RrVpP5cpFYg
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38811539
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Михаил Ч.BobgosНужно по данным Excel построить маршрут от точи А в точку Б не пересекая стены
по dwg ничего подсказать не могу, но по нахождению выхода из лабиринта можно использовать волновой алгоритм.
Если лабиринт перенести в Excel, то решение можно достаточно легко сделать волновым алгоритмом.
Как пример: https://yadi.sk/i/f0RrVpP5cpFYg

полностью перенести наверно будет неправильно - дополнительные операции преобразования в ячейки, приведения к масштабу. Потом вернуть назад, с учетом скруглений, для переноса в excel вернется в dwg криво.

Комментариев немного в файле.
Можно пояснить принцип и последовательность операций - как это реализовано в Excel, привести ключевой код (название процедуры)?

1. Задаем начальное направление
2. Ищем точку в которой встречается препятствие.
....
что дальше?
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38811550
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bobgos,
в примере Choose(i, 1, 0, -1, 0) - что такое?
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38812472
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Михаил Ч.BobgosНужно по данным Excel построить маршрут от точи А в точку Б не пересекая стены
по dwg ничего подсказать не могу, но по нахождению выхода из лабиринта можно использовать волновой алгоритм.
Если лабиринт перенести в Excel, то решение можно достаточно легко сделать волновым алгоритмом.
Как пример: https://yadi.sk/i/f0RrVpP5cpFYg

Михаил, баг или что-то недопонял. Алгоритм из файла в тупик попадает. Трети не закрасил, и стал мотаться по кругу в области ячеек 20-30 по оси.

Вопрос в следующем:
перенести из dwg модель в Эксель тоже еще та задачка.

Можете описать основной принцип волнового метода?
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38812556
Михаил Ч.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходная тема с лабиринтом: http://perfect-excel.ru/publ/excel/makrosy_i_programmy_vba/stroim_labirint_i_pishem_programmu_dlja_poiska_vykhoda/7-1-0-57

По кнопке "Старт" запускается алгоритм написанный автором темы - Денисом Батьяновым, в основе которого "правило одной руки", поэтому решение может не всегда быть найдено.

Мой алгоритм запускается нажатием на кнопку "Волновой алгоритм". Если выход есть, то он будет найден.

авторв примере Choose(i, 1, 0, -1, 0) - что такое?
Это выбор направления по значению переменной i: влево, вверх, вправо, вниз.

Можете привести пример вашего лабиринта, чтобы понимать что именно нужно.
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38812929
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Михаил Ч.,
Пример лабиринта во вложении
Задача - найти оптимальный путь (по длине) и начертить линии трасс по исходным данным, полученным при обработке чертежа и записанным в Excel)

Черные - стены
Оранжевые - доступные для прохода зоны (заносим при прорисовке в dwg зон в excel в табличку x1,y1,x2,y2,x3,y3,x4,y4)
Зеленые - оси доступных для прохода зон (к ним нужно привязать линии)
Широкие полилинии (синие, голубые и т.д. с различным ототбражением) - примеры маршрутов
Фиолетовые кружки - точки начала и окончания (из vba запрашиваем ввод точки, чертим кружок определенного диаметра, вносим данные о точке в Excel. Каждая точка может быть как входной так и выходной
Фиолетовая граница - общая область исследования

http://i.imgur.com/fY3CkNw.png
Данные о стартовой точке и финишной показываем на чертеже и передаем в excel.vba как координаты xyz1.x, xyz1.y (Double)
После прокладки оптимального, поправок для лучшего отображения нескольких маршрутов для разных цветов - записываем маршрут в Excel, чтобы потом быстро прорисовать без поиска или ручной оптимизации положения линий.
Ограничения проходов по ширине пока не рассматриваем.

Возможно применимость предлагаемого места вызывает смуту, потому как нужно найти не выход из лабиринта, а конкретный путь от точки А к точке Б?
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38813100
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos, в свое время использовал алгоритм "поиск в ширину"
когда баловался и писал прогу по поиску маршрута в метро
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38813261
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot,

Указанный метод метод больше похоже на эффективное решение моей задачи.
Но все равно потребуется позиционироваться в пространстве dwg, чтобы определить возможные точки маршрута.

Для этого нужно или нет оцифровать в массив все пространство чертежа с необходимой дискретностью?

Или оцифровать доступные области в координатах чертежей, затем найти прилегающие координаты областей - которые будут областями для возможной смены маршрута? - достаточно?

А вот так не получится?
1. Иду вдоль первого выбранного вектора в направлении максимального отклонения по одной из осей точки А от точки Б.
2. Упираюсь в препятствие и поворачиваю по 2-м перпендикулярным векторам.
3. Проверяю доступность области по следующему шагу по новому вектору. Если после поворота по новому вектору нет доступной области на следующем шаге ветку направление от последнего поворота считаю без решения.
4. Повторяю 1-3 для всех решений перечислений пока не буду в пределах одного шага от цели
5. Фиксирую первое решение и его ветку вырисовываю. Последующие решения - опционально.... для построения более дешевого по разнице координат между поворотами. По идее самое дешевое решение появится первым.

Поможете с кодом VBA? Уже третий подход и все в тупик. То одно, то другое приводит к краху идеи.
Может примерчик какой для подобной задачи наваяем или подыщем?
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38813965
Михаил Ч.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если есть возможность построить граф по данному лабиринту (описать все возможные маршруты по соседним перекресткам с указанием расстояний, где перекресток - это вершина графа, расстояния между перекрестками - ребра графа) то задачу по нахождению кратчайшего пути от любой точки до любой другой можно с помощью алгоритма Дейкстры (или Левита или Форда-Беллмана или Флойда-Уоршелла)

Примеры нахождения кратчайших путей по графам размещал здесь: http://www.excelworld.ru/forum/3-6656-1

Если задачу свети к построению графа по указанному лабиринту, то найти кратчайшие пути будет не сложно.
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38818000
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos , что-то пропустил продолжение темы.
Как сказал Михаил Ч. надо построить граф по лабиринту. Здесь помочь мне сложно, т.к я не знаком с dwg

Вот Вы постоянно говорите "вектор". То в случае графа вектор и есть ребро графа, т.е начало и конец вектора - вершины графа
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38820084
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot Bobgos , что-то пропустил продолжение темы.
Как сказал Михаил Ч. надо построить граф по лабиринту. Здесь помочь мне сложно, т.к я не знаком с dwg

Вот Вы постоянно говорите "вектор". То в случае графа вектор и есть ребро графа, т.е начало и конец вектора - вершины графа

так как построить граф по лабиринту описанному точками A(x1,y1);B(x2,y2);C(x3,y3);D(x4,y4) - разрешенные области - прямоугольники?
и найти:
а) оптимальный путь
б) пересечение путей для разных трасс (из совсем несвязанных точек)

Честно-задач навалило. Самому ваять не успевается, вижу код растет и явно что-то делаю не так.
Хелп,
дайте направления в виде примера кода
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38820095
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Михаил Ч.Если есть возможность построить граф по данному лабиринту (описать все возможные маршруты по соседним перекресткам с указанием расстояний, где перекресток - это вершина графа, расстояния между перекрестками - ребра графа) то задачу по нахождению кратчайшего пути от любой точки до любой другой можно с помощью алгоритма Дейкстры (или Левита или Форда-Беллмана или Флойда-Уоршелла)

Примеры нахождения кратчайших путей по графам размещал здесь: http://www.excelworld.ru/forum/3-6656-1

Если задачу свети к построению графа по указанному лабиринту, то найти кратчайшие пути будет не сложно.
да, очень похоже, но как построит графы в моем случае в этом пробема
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38820992
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos,
берем код из первого поста
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Type NcAreasSQ 'тип разрешенная область
    a1 As NcXYZ
    a2 As NcXYZ
    a3 As NcXYZ
    a4 As NcXYZ
    iD As Integer
End Type


Я не знаю на каком принципе Вы будете её заполнять, но...
если представить эту область вершиной графа, то получаем (код примерный, т.к давно с ВБ не работал)
Код: vbnet
1.
2.
Dim tops() as NcAreasSQ 'массив вершин графа
Dim paths() as Integer 'массив ребер графа


где paths() состоит из двух частей
iD - идентификатор вершины
iDNear - идентификатор смежной вершины
для каждого iD , может быть несколько записей (по кол-ву смежных вершин)

Думаю, что массив вершин и смежных вершин лучше представить в виде Dictionary или Collection
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38821081
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKotBobgos,
берем код из первого поста
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Type NcAreasSQ 'тип разрешенная область
    a1 As NcXYZ
    a2 As NcXYZ
    a3 As NcXYZ
    a4 As NcXYZ
    iD As Integer
End Type


Я не знаю на каком принципе Вы будете её заполнять, но...
если представить эту область вершиной графа, то получаем (код примерный, т.к давно с ВБ не работал)
Код: vbnet
1.
2.
Dim tops() as NcAreasSQ 'массив вершин графа
Dim paths() as Integer 'массив ребер графа


где paths() состоит из двух частей
iD - идентификатор вершины
iDNear - идентификатор смежной вершины
для каждого iD , может быть несколько записей (по кол-ву смежных вершин)

Думаю, что массив вершин и смежных вершин лучше представить в виде Dictionary или Collection

Id - идентификатор вершины, графа, которую еще нужно определить.
Имеем на старте две вершины - точку начала и окончания.
Как найти смежную вершину - точку в которой возможен поворот пути по коридорам областей. чтобы сначала заполнить граф.
Код: vbnet
1.
2.
3.
Public Type NcXYZ 'координаты
    x As Double: y As Double
End Type


Т.е. граф будет состоять из массива точек
Код: vbnet
1.
Dim  GPiont as NcXYZ 
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38821348
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos, я не работаю с dwg и не знаю как там что хранится
Вы сначала определите, как распарсить файл, что в нем хранится и как. Тогда будет уже более продуктивный разговор
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38823042
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AFAIK dwg закрытый бинарный формат (хотя, раз другие его поддерживают, наверное уже полу-закрытый ))) )
Наверное проще сконвертировать DWG в DXF и парсить DXF.

AFAIK
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38823210
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема не перевести из dwg в xls координаты. Вопрос как построить граф?
считаем, что уже есть координаты областей по которым можно строить маршрут от точки А к точке Б.

как построить граф и проложить маршрут - определить координат точек ломаной линии?
Да еще и посчитать какой путь короче, для двух маршрутов найти точки пересечения?
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38823648
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgosпроблема не перевести из dwg в xls координаты. Вопрос как построить граф?
считаем, что уже есть координаты областей по которым можно строить маршрут от точки А к точке Б.

как построить граф и проложить маршрут - определить координат точек ломаной линии?
Да еще и посчитать какой путь короче, для двух маршрутов найти точки пересечения?
предоставьте больше данных (побольше строк и не в виде картинки) и как это выглядит графически.
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38825256
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos, метод правой (или левой руки) прост: двигаемся в любую сторону, не отрывая руку от стенки, пока не выйдем. Можно зациклиться, если есть внутренний цикл. Тогда будем бесконечно крутиться вокруг, значит надо помечать пройденное место. Собсно, и весь алгоритм - в детстве ещё читал.
И выше уже писали: сначала построить граф, затем проверить на циклы в грАфе.
А нужно ли искать кратчайший?

Помимо указанных форматов есть открытый формат DOT, готовится в ноутпаде. Такой формат легко засасывается в ячейки эксел и при необходимости там и правится, и проверяется.

digraph имя {
//здесь навалом пишем все пары в любом порядке
a1 -> b1;
a1 -> b2;
a1 -> b3;
b2 -> c1;
f1 -> b3;
b2 -> c1;
b2 -> f1;
a1 -> d1;
a1 -> d1;
и т.д.
}
Если просто надо визуализировать для проверки, то можно использовать неприхотлтвый, но мощный открытый пакет GraphViz. В нём основные утилиты dot.exe - конвертер в каринки и dotty.exe - визуальный редактор графа.


Если же надо программно обработать граф, то изначально есть 2 канонических представления графа.
Вообще, граф == отображение {A} --> {A}x{A}, где {A}-множество вершин, которое отобрашается в их Декартово произведение. А по-русски: это вершины и рёбра вместе взятые.
Ой, чей-то много написал ...
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38825272
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos, на вопрос как построить граф?
А что за координаты на рисунке. Народ имел ввиду, что вы создёте массив центральных точек на всех перекрёстках - это вершины графа. Или вопрос как автоматизировать нахождение перекрёстков, когда есть вершины криволинейных прямоугольников-коридоров? В последнем случае, если руками указать все перекрёстки , то их центры взять как среднеарифм. координат.

Да, о представлениях графа. В языках давно есть готовые Tree-структуры.
Если с чистого листа, то: либо "матрица вершин" (почти вся пустая), либо "списки инцидентности", которые похожи на формат DOT. Но вот программировать удобнее на списках, тк. уже есть готовые методы: следующий, предыдущий, пусто и т.д.
Ну и две стратегии обхода всего графа: поиск "в ширину"/"в глубину" - всё равно всё пройденное запоминать надо.
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38825287
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чтоб мысль закончить. Алгоритм эмпирического блуждания по графу - тогда не надо никаких поворотов/векторов/углов и проч. Просто полагаем, что ребро графа - это коридор. Ну или алгоритм поиска пути, приближённого к короткому.
При выборе способов ещё важно, насколько повторяемо будет это задание. Если один раз сделать, то можно и полувручную.
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38825339
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой ещё вопрос остался?
Bobgosпроблема не перевести из dwg в xls координаты. Вопрос как построить граф?
считаем, что уже есть координаты областей по которым можно строить маршрут от точки А к точке Б.

как построить граф и проложить маршрут - определить координат точек ломаной линии?
Да еще и посчитать какой путь короче, для двух маршрутов найти точки пересечения?

Если я правильно понял: имеем криволинейные полоски на плоскости, которые могут пересекаться, да? По типу топографической карты, рекка и её притоки + каналы и т.д. Или дороги на местности. А как карты векторизуют, они ведь пиксельные?

Т.е. как превратить полоску в линию?
Доморощенный и неудобный вариант: решение системы линейных неравенств вида:
a1 *x +b1*y<=c1
a2 *x +b2*y>=c2,
решение - это прямоугольник, отрезок, точка либо пусто.

Два таких прямоугольника задают пересечение 2-х фрагментов "дорог".
Находим все изолированные (или даже частично пересекрывающиеся парные пересечения) - это и будут перекрёстки.
Для этого кластеризуем найденные пересечения.
Центры найденных кластеров можно принять за перекрёстки.
(Этот метод имеет погрешности)

Универсальный метод "по гребню хребта".
Каждый участок "дороги" сглаживаем окрестностным сглаживателем. В результате получаем вместо плоской дороги 3-хмерный вал (хребет на местности). Теоретически у хребта будет гребень (или узкое плато, идущее по вершине).
Затем ищем точки пересечения гребней, т.е. 1-мерных линий. Но и тут есть некоторые нюансы, т.к. строгого пересечения может не быть.
На qb я когда-то баловался, валяется черновик.

авторКак найти смежную вершину - точку в которой возможен поворот пути по коридорам областей
Например:
Если в достаточно маленькой окрестности точки на линии есть точки другой линии.

Здесь выбор за сглаживателем - это для каждой точки дороги просто взвешенная сумма всех её точек, попадающих в некоторую окрестность.
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38826869
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exp98,

Не вовремя полетел винт на ноуте...

Долго пытался находить смежные стороны у прямоугольников дорог, но уж очень сложен становится код, и граф получится не линий а полос. Спаибо за подсказки.

Да, нужно для начала из прямоугольников сделать отрезки. Здесь координаты x1+(x2-x1)/2 нахожу центральные. Это видимо ребра графа?

Пересечения ищу тупо перебирая с шагом скажем 10мм линию ребро графа на предмет нахождения с таким же отклонением (10мм) координаты у другого ребра. Вот тут понял, что метод в корне неверный.. Зная что мои векторы только вертикальных или горизонтальны думаю прще составить функцию описывающую каждый отрезок. Но как и как потом найти пересечения?
Можно привести пример кода
...
Рейтинг: 0 / 0
Поиск маршрута vba и dwg
    #38827028
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobgos,
добрый вечер,я случайно сюда щас гянул. Ваш вопрос мне вполне интересен теоретически, и чего смогу, то подскажу. Но ведь не я один такой "умный" в инете.

Выше уже просили показать побольше данных. Добавляю просьбу:
- примеры координат в ТЕКСТОВОМ виде,точек 100,например. И вообще, каков масштаб проблемы,т.е. порядок точек всего?
- рисунок характерных перекрёстков, пусть даже и сделанный в пайнтбраше. Возможно пропорции перекрёстков окажутся важны.

Задача ведь не элементарная. Когда будет понятно с алгоритмом, с кодом будет легче. Насколько я понимаю в технике программирования, то при обходах графов полезны рекурсивные вызовы функции со статическими переменными (либо их замена на глобально доступные переменные).

Насчёт алгоритмов у меня появилась идея, но применима ли она здесь - надо посмотреть распределение точек с координатами.
Из рисунка надо оценить сложность перекрёстков: "Ж"-обрАзные, Г-, Т-,Х-,"(", "|" и т.д ?

Из последнего сообщения мне показалось, что Вы думали о графе, который строится из "стенок" коридоров,да? Я уверен, что здесь предлагался как раз граф "коридоров" и перекрёстков. Хотя м.б. подойдёт идея соединить стенки коридоров в цепочку рёбер,тогда граф т.ск. уже построен.
Вопрос с функцией отрезков мне не очень понятен. Если есть уравнение 2-х прямых, то их т. пересечения вычисляется теоретически.

В частности, для примера, пока Вы вполне можете руками в экселе
сделать матрицу парных расстояний тех точек, которые определяют перекрёстки (как я понимаю - это углы коридоров). Лучше для статистики вообще любых точек, в т.ч. и на перекрёстках. Расстоянние самое Евклидовое sqrt( (x1-x2)^2 + (y1-y2)^2 ), впрочем можно обойтись без корня,т.к. нам важно их только сравнить.

Затем вытягиваете матрицу в один столбец.

Затем все смотрим ТОЧЕЧНУЮ диаграмму по этому столбцу. Есть подозрение, что даже визуально точки будут распадаться на кластеры.

Дальнейшие выводы возможны после визуализации, но идея такая.
Кластеры с минимальными значениями соответствуют перекрёсткам, но при этом ВСЕМ перекрёсткам.

Чтобы отделить один от другого нужно с каждым парным расстоянием ассоциировать конкретные координаты этих точек. Т.о. точки получают признак "перекрёсток".

Затем умно "кластеризуем" сами точки.
Умозрительно говоря, два этих множества должны пересекаться как раз в местах перекрёстков.

Это всё можно сделать формулами при помощи рук. Это всё делается только для того, чтобы нащупать канву алгоритма, а без характерных данных я дальше не фантазирую. Ну, есть ещё способ: превратить всё в растр и напустить векторизатор в автоматизированом режиме, а потом вытащить координаты и программировать.
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 1 из 5
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск маршрута vba и dwg
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]