Страница 1 из 1

Найти области самопересекающийся многоугольник

Добавлено: 01 июл 2017, 17:27
student1
Я пытаюсь разбивать самопересекающийся многоугольник на области и назначать полярность свойства (положительную и отрицательную) для каждую область.
Многоугольник
Многоугольник
Идея в том, чтобы найти, как дорожка на печатной плате принимает электромагнитные помехи. Каждая дорожка на печатной плате формирует замкнутый контур с проводником GND, а самопересекающиеся сегменты петли оказывают влияние на помехи. Многоугольник, образованный некоторой сигнальной дорожкой и GND показан в приложении.
ss2.png
Линии не всегда параллельны / перпендикулярны, поэтому мы не можем полагаться на это как правило, линии могут быть любого угла. Смотри набор строк, созданных с реальной печатной платы.
ss3.png
Результат будет - два массива многоугольников (Poly_A и Poly_B) для положительных и отрицательных областей.

Эсть VI «Polygon area.vi», который вычисляет площадь многоугольника принимая во внимание самопересечения, но не выдает информацию об области самопересечения.

Любые предложения и идеи будут оценены.
Спасибо

Re: Найти области самопересекающийся многоугольник

Добавлено: 02 июл 2017, 01:04
Юрий
Для старта вот такая программка, определяет координаты точек пересечения. Думаю, что имея эти данные, области будет определить проще. Если нужны номера отрезков, которые формируют точку пересечения, думаю, и сам добавишь.

Re: Найти области самопересекающийся многоугольник

Добавлено: 02 июл 2017, 20:36
student1
К сожалению я использую версию 2014. Я буду очень благодарен, если вы сможете загрузить его в 2014. Спасибо!

Re: Найти области самопересекающийся многоугольник

Добавлено: 02 июл 2017, 23:48
Юрий
Вот, сохранено в LV2014.

Re: Найти области самопересекающийся многоугольник

Добавлено: 03 июл 2017, 00:04
student1
Спасибо! Это именно то, что мне нужно для начала обработки - очень умное и элегантное решение!

Re: Найти области самопересекающийся многоугольник

Добавлено: 03 июл 2017, 00:34
Юрий
Ну, что ж, рад, что в масть. Решение не закончено, поскольку будут проблемы при вертикальных отрезках (деление на ноль). В этом случае надо вводить дополнительные действия. Вижу два варианта:
1. Искусственно одну из точек вертикального отрезка смещать по X на величину с одной стороны не влияющую на конечный результат, а с другой - достаточную для ухода от нуля.
2. Только для этого случая базовым параметром для вычисления точки пересечения брать не X, а Y. Для этого лучше создать подпрограммку нахождения точки пересечения двух отрезков и при необходимости менять местами X и Y.

Re: Найти области самопересекающийся многоугольник

Добавлено: 08 янв 2018, 18:54
Юрий
Тут пришлось мне делать программку, в которой так же нужно было находить точки пересечения двух прямых на плоскости. Вспомнив эту тему решил обобщить это решение. Конечно, в первую очередь оно касалось проблемы вертикальных прямых. Во вложенном VI дано краткое описание решения.

Re: Найти области самопересекающийся многоугольник

Добавлено: 08 янв 2018, 19:13
dadreamer
Если стоит VDM, то можно воспользоваться IMAQ Lines Intersection VI: http://zone.ni.com/reference/en-XX/help ... ersection/ . Там же на вкладке Analytics Geometry ещё много всякого интересного.

Re: Найти области самопересекающийся многоугольник

Добавлено: 09 янв 2018, 19:15
Blackman
Задача довольно просто решается при помощи VI из библиотеки Geometry

Re: Найти области самопересекающийся многоугольник

Добавлено: 09 янв 2018, 23:37
Юрий
Что то у меня (LV 2015) в библиотеке геометрия нет vi Line Intersection. С чем это может быть связано?

Re: Найти области самопересекающийся многоугольник

Добавлено: 10 янв 2018, 05:32
taras_33
Один к одному, без привязки к библиотеке Geometry

Re: Найти области самопересекающийся многоугольник

Добавлено: 10 янв 2018, 11:05
Blackman
Нет в меню, в библиотеке есть. Это subVI. Через иерархию.
Добавил возможность выбора типа полигона.