2013-09-28 2 views
0

У меня есть многоугольник. enter image description herexlib programming - как найти, если линия находится за пределами заданного полигона

Как я могу узнать через xlib-программирование, находится ли черная линия цвета вне полигона или внутри многоугольника.

+0

Хммм .. это похоже край кейс. Если начало и/или конечные точки * на * границе полигона, то это «внутри»? Что, если одна точка внутри, а другая нет? Если обе точки «не» внутри, вы можете проверить, пересекает ли она какой-либо из краев многоугольника (а если он входит, то выходит, полигон - это *, который «внутри»?) – usr2564301

ответ

0
  1. создать функцию, которая определяет, является ли точка внутри/по краю/вне полигоне

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

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

  2. , если линия не пересекает ни многоугольник линии, то

    • , если его стенд точка внутри многоугольника, то линия находится внутри полигона
    • , если его стенд точка находится за пределами полигон, то линия находится вне полигона
    • , если одна точка находится внутри и один снаружи, то линия частично
    • , если одна или две точки находятся на краю затем проверить среднюю точку линии вместо
  3. , если линия имеет пересекает ни многоугольник линии, то

    и что пересечение не является также вершина линии (на краю), то линия частично еще полностью или в соответствии со второй точкой линии