У меня есть следующий домен, который состоит из поли-линий VTK - каждая строка начинается и заканчивается на «х», может иметь много точек, и ей назначен левый и правый флаг для обозначения области слева исправа от этой линии, определяется, если вы идете по линии от начала до конца.
область интересов http://oi43.tinypic.com/vwsug5.jpg
Для любой случайной точки rp
в области мне нужночтобы выяснить, в каком регионе он находится.
До сих пор я пытался:
- Расчет ближайшей точки vtk к
rp
, нахождение кривой, к которой он принадлежит, и затемвычисление, если rp
находится слева или справа от кривой.Это не работает для замкнутых кривых, таких как окружающая область 1
на рисунке выше, особенно если они не являются непрерывными (т. Е. Прямоугольник) - Разбивка домена на сегменты: первоначально те сегменты, которыесодержат точку vtk, заполненную флагами региона, связанными с этой точкой;остальные ведра затем заполняются на основе их соседей.Контейнер, в который попадает
rp
, возвращает свой набор флагов.Однако у меня возникают проблемы с тем, чтобы это работало, когда в корзине содержится более одного флага региона (т. Е. Когда rp
находится близко к линии).
Я предполагаю, что это, вероятно, решенная проблема, но я не совсем уверен, где искать.Я думал о проблеме точка-многоугольник , но я имею дело с кривыми, а не с многоугольниками.Другие идеи включают трассировку лучей, но кажется, что она больше подходит для 3D.
Кто-нибудь может предложить альтернативу или модификацию того, что я пробовал?