В математике ориентация кривой — это выбор одного из двух возможных направлений движения по кривой. Например, для декартовых координат ось x традиционно направлена вправо, а ось y — вверх .
В случае плоской простой замкнутой кривой (то есть кривой на плоскости, начальная точка которой является также конечной точкой и которая не имеет других самопересечений), кривая называется положительно ориентированной или ориентированной против часовой стрелки , если при движении по ней внутренняя часть кривой всегда находится слева (и, следовательно, внешняя часть кривой — справа). В противном случае, то есть если левое и правое поменять местами, кривая является отрицательно ориентированной или ориентированной по часовой стрелке . Это определение основано на том факте, что каждая простая замкнутая кривая допускает хорошо определенную внутреннюю часть, что следует из теоремы Жордана о кривой .
Внутренняя петля кольцевой дороги в стране, где люди ездят по правой стороне дороги, является примером отрицательно ориентированной ( по часовой стрелке ) кривой. В тригонометрии единичная окружность традиционно ориентирована против часовой стрелки .
Понятие ориентации кривой является лишь частным случаем понятия ориентации многообразия (то есть, помимо ориентации кривой, можно говорить также об ориентации поверхности , гиперповерхности и т . д.).
Ориентация кривой связана с параметризацией ее точек действительной переменной. Кривая может иметь эквивалентные параметризации, когда есть непрерывная возрастающая монотонная функция, связывающая параметр одной кривой с параметром другой. Когда есть убывающая непрерывная функция, связывающая параметры, то параметрические представления противоположны и ориентация кривой меняется на обратную. [1] [2]
В двух измерениях, если задан упорядоченный набор из трех или более соединенных вершин (точек) (например, в connect-the-dots ), который образует простой многоугольник , ориентация полученного многоугольника напрямую связана со знаком угла в любой вершине выпуклой оболочки многоугольника, например, угла ABC на рисунке. В вычислениях знак меньшего угла, образованного парой векторов, обычно определяется знаком векторного произведения векторов. Последний может быть вычислен как знак определителя их матрицы ориентации. В частном случае, когда два вектора определяются двумя отрезками с общей конечной точкой, такими как стороны BA и BC угла ABC в нашем примере, матрица ориентации может быть определена следующим образом:
Формулу для ее определителя можно получить, например, с помощью метода разложения сомножителей :
Если определитель отрицательный, то многоугольник ориентирован по часовой стрелке. Если определитель положительный, то многоугольник ориентирован против часовой стрелки. Определитель не равен нулю, если точки A, B и C не лежат на одной прямой . В приведенном выше примере с точками, упорядоченными как A, B, C и т. д., определитель отрицательный, и, следовательно, многоугольник ориентирован по часовой стрелке.
В практических приложениях обычно принимаются во внимание следующие соображения.
Не нужно строить выпуклую оболочку многоугольника, чтобы найти подходящую вершину. Обычным выбором является вершина многоугольника с наименьшей координатой X. Если их несколько, выбирается вершина с наименьшей координатой Y. Она гарантированно будет вершиной выпуклой оболочки многоугольника. В качестве альтернативы подойдет вершина с наименьшей координатой Y среди вершин с наибольшими координатами X или вершина с наименьшей координатой X среди вершин с наибольшими координатами Y (или любая другая из 8 комбинаций «наименьшая, наибольшая» X/Y). После выбора вершины выпуклой оболочки можно применить формулу, используя предыдущую и следующую вершины, даже если они не находятся на выпуклой оболочке, так как на этой вершине не может быть локальной вогнутости.
Если требуется определить ориентацию выпуклого многоугольника , то, конечно, можно выбрать любую вершину.
По числовым причинам обычно используется следующая эквивалентная формула для определителя:
Последняя формула имеет на четыре умножения меньше. Что еще более важно в компьютерных вычислениях, используемых в большинстве практических приложений, таких как компьютерная графика или САПР , абсолютные значения множителей обычно меньше (например, когда A, B, C находятся в одном квадранте ) , что дает меньшую числовую ошибку или, в крайних случаях, позволяет избежать арифметического переполнения .
Когда заранее неизвестно, что последовательность точек определяет простой многоугольник, необходимо иметь в виду следующее.
Для самопересекающегося многоугольника ( сложного многоугольника ) (или для любой самопересекающейся кривой) нет естественного понятия "внутренней части", поэтому ориентация не определена. В то же время в геометрии и компьютерной графике существует ряд понятий, заменяющих понятие "внутренней части" для замкнутых непростых кривых; см., например, " заливка " и " число витков ".
В «мягких» случаях самопересечения с вырожденными вершинами, когда трем последовательным точкам разрешено находиться на одной прямой и образовывать нулевой угол, концепция «внутренней» все еще имеет смысл, но необходимо проявлять особую осторожность при выборе проверяемого угла. В приведенном примере представьте, что точка A лежит на отрезке BC. В этой ситуации угол ABC и его определитель будут равны 0, следовательно, бесполезны. Решение состоит в том, чтобы проверять последовательные углы вдоль многоугольника (BCD, DEF,...), пока не будет найден ненулевой определитель (если только все точки не лежат на одной прямой ). (Обратите внимание, что точки C, D, E находятся на одной прямой и образуют 180-градусный угол с нулевым определителем.)
Как только ориентация многоугольника, образованного из упорядоченного набора вершин, известна, вогнутость локальной области многоугольника может быть определена с помощью второй матрицы ориентации. Эта матрица состоит из трех последовательных вершин, которые исследуются на вогнутость. Например, в многоугольнике, изображенном выше, если мы хотим узнать, является ли последовательность точек FGH вогнутой , выпуклой или коллинеарной (плоской), мы строим матрицу
Если определитель этой матрицы равен 0, то последовательность коллинеарна — ни вогнутая, ни выпуклая. Если определитель имеет тот же знак, что и матрица ориентации для всего многоугольника, то последовательность выпуклая. Если знаки различаются, то последовательность вогнутая. В этом примере многоугольник отрицательно ориентирован, но определитель для точек FGH положительный, и поэтому последовательность FGH вогнутая.
В следующей таблице приведены правила определения того, является ли последовательность точек выпуклой, вогнутой или плоской: