Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Modis
4 / 4 / 4
Регистрация: 20.01.2011
Сообщений: 339
1

Сравнение геометрии пересечения стен для поиска идентичных пересечений

24.03.2018, 10:11. Просмотров 246. Ответов 7
Метки нет (Все метки)

Всем привет. Стоит у меня задача - на плане этажа (работа идет в Revit, но это не важно) проанализировать все стены, найти их пересечения и сортировать их по уникальности. В общем, задачу я решил, но за исключением одной проблемы, о которой пойдет речь.
Для начала я анализирую каждую стену на наличие пересечений. Пересечением я считаю тот случай, когда все стены пересекаются в одной точке (у каждой стены есть направляющая линия, которая ровно по середине - на рисунках это фиолетовые линии. Фиолетовые кружки - точка пересечения). Далее, все эти пересечений я сортирую в группы по определенным критериям.
Одним из критериев уникальности являются толщины стен. Допустим, я нашел пересечение 3-х стен в одной точке (Т-образное пересечение). Из этих трех стен одна толщиной 200 и две толщиной 180:
Сравнение геометрии пересечения стен для поиска идентичных пересечений

Т.е. при анализе следующих пересечений, если у меня совпадут критерии: количество стен - 3, толщины стен - 180, 180, 200 - я возьму это пересечение и буду считать его аналогичным номеру 1.
Однако возникает проблема:
Сравнение геометрии пересечения стен для поиска идентичных пересечений

Как видно на изображении - критерии у меня подходят: это три стены с толщинами 180, 180 и 200. Но вот геометрически - это разные случаи!

Есть предположение, что нужно сравнить эти два случая по каким-то геометрическим условиям, но вот как это сделать - я не могу придумать. При этом нужно учесть, что такие узлы (пересечений) могут быть повернуты

Есть идеи?
Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2018, 10:11
Ответы с готовыми решениями:

Алгоритм равномерного пересечения нескольких стен
Здравствуйте. Пиши программу, завис на алгоритме. Если общее описание...

Сравнение значений в двух идентичных таблицах
Друзья снова прошу помощи у вас Имеется 2 таблицы , одна на 4м , другая на 6м...

По разному работает сравнение числа в идентичных строках
Здравствуйте. Прошу разъяснить мне следующую ситуацию, а то у меня уже мозги...

Сравнение 2 текстовых файлов и замена идентичных данных
Приветствую всех Уверен задача несложная для многих из вас,нужна ваша помощь в...

Найти ошибку в программе поиска пересечений окружностей
var r1, r2, x1, y1, x2, y2, c, rmin, rmax: real; begin write('Введите...

7
Modis
4 / 4 / 4
Регистрация: 20.01.2011
Сообщений: 339
24.03.2018, 10:23  [ТС] 2
Предположение: если в точке пересечения построить окружность, то я смогу получить набор точек в местах пересечения окружности и стен. Значит, если совместить этот набор точек с таким же набором точек в другом пересечении, то все точки должны совпасть.
НО! Это при условии, что оба узла (пересечения) расположены одинаково - без поворота
0
Shamil1
Модератор
2234 / 1522 / 346
Регистрация: 26.03.2015
Сообщений: 5,413
24.03.2018, 16:22 3
Предполагая, что все углы прямые, каждое пересечение можно обозначить упорядоченной четвёркой чисел. Это толщина стен по часовой стрелке. Для каждого пересечения из четырёх вариантов выбираем самый маленький.

1 будет (0, 180, 200, 180).
2 будет (0, 180, 180, 200).
0
Modis
4 / 4 / 4
Регистрация: 20.01.2011
Сообщений: 339
24.03.2018, 16:36  [ТС] 4
Цитата Сообщение от Shamil1 Посмотреть сообщение
Предполагая, что все углы прямые
Я придумал другое решение, но не могу его доказать, что оно всегда верно (как и доказать, что оно всегда неверно). Причем, моё решение не нуждается в учете угла поворота. Постараюсь объяснить мою теорию:
Создаю специальный класс, который будет содержать информацию по угловому отношению двух стен и значений ширины этих двух стен. Для каждого узла нужно собрать все такие "отношения", избегая повторений в обратном порядке (т.е. когда я сравниваю две стены, но первый раз 1 со 2, а второй раз 2 с 1 - это одно и тоже "отношение"). Благо, у стен есть идентификаторы. Таким образом в случае с тремя стенами я буду получать список из трех "отношений". Для изображения номер один это (буду записывать ширина1-ширина2-угол):
(180-200-90°, 200-180-90°, 180-180-180°)
Для второго изображения это будет:
(180-180-90°, 180-200-90°, 180-200-180°)
Ну а дальше мне нужно для первого пересечения взять "список отношений" и сравнить его со списком "отношений" второго пересечения. Если оба списка содержать одинаковые значения (не важно в каком порядке), значит у них совпадающая геометрия
0
Shamil1
Модератор
2234 / 1522 / 346
Регистрация: 26.03.2015
Сообщений: 5,413
24.03.2018, 16:56 5
Цитата Сообщение от Modis Посмотреть сообщение
Я придумал другое решение
Нужно приводить эти списки к каноническому виду. То есть, задать однозначный порядок (и троек, и в тройке). Например, по часовой стрелке. И из эн вариантов (по количеству углов) выбирать тот, который даёт минимальное значение.
0
Modis
4 / 4 / 4
Регистрация: 20.01.2011
Сообщений: 339
24.03.2018, 17:04  [ТС] 6
Цитата Сообщение от Shamil1 Посмотреть сообщение
То есть, задать однозначный порядок
А зачем? Не вижу смысла
Единственное, для чего это может понадобится - чтобы различить зеркальные узлы. Но в контексте моей задачи зеркальные узлы удовлетворяют условиям идентичности
0
Shamil1
Модератор
2234 / 1522 / 346
Регистрация: 26.03.2015
Сообщений: 5,413
24.03.2018, 17:23 7
Цитата Сообщение от Modis Посмотреть сообщение
А зачем?
Чтобы одинаковые пересечения отображались одинаковыми списками. Тогда не придётся, сравнивая списки, проверять n*m вариантов.
0
Modis
4 / 4 / 4
Регистрация: 20.01.2011
Сообщений: 339
26.03.2018, 11:07  [ТС] 8
Цитата Сообщение от Shamil1 Посмотреть сообщение
Нужно приводить эти списки к каноническому виду. То есть, задать однозначный порядок (и троек, и в тройке). Например, по часовой стрелке. И из эн вариантов (по количеству углов) выбирать тот, который даёт минимальное значение
Да, вы правы. Сегодня пришёл к этому же выводу. Сейчас сижу думаю над реализацией
0
26.03.2018, 11:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2018, 11:07

Сравнение пересечения дуг на окружности.
посоветуйте как лучше сравнивать пересечения дуг на окружности, может кто...

Приложение для расчета количества рулонов обоев, необходимых для оклейки стен комнаты.
Программа должна содержать форму, в которую работник вводит длину и ширину...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru