по обе стороны от


по обе стороны от точки A на прямой окажется четное число точек пересечения со сторонами, то точка лежит вне многоугольника, а если нечетное - то внутри. Таким образом, алгоритм состоит в следующем: выбираем прямую, находим, с какими сторонами она пересекается и в каких точках, и считаем количество таких точек с одной стороны от A. В качестве прямой удобно взять, например, горизонтальную прямую (Y = A.y). Для нее проще, чем для произвольной прямой, проверять наличие точки пересечения с отрезком, считать ее координату (одну!) и проверять, с какой стороны от A эта точка лежит. При реализации этого алгоритма стоит иметь в виду 2 небольшие детали: * прямая может проходить через вершину многоугольника, причем 2 разными способами - пересекая границу многоугольника или касаясь границы многоугольника; * сторона прямоугольника может быть горизонтальной и лежать на прямой. Время O(N) является неплохим, и вряд ли можно желать лучшего, если речь идет о вопросе, решаемом
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz