mah_pankaj Ответов: 1

Контурные точки направление по часовой стрелке или против часовой стрелки


У меня есть несколько точек в порядке, скажем, 1-10, которые создают контур (многоугольник) в 2-D плоскости. Теперь я хочу проверить, что эти точки от начальной точки до конечной точки движутся по часовой стрелке или против часовой стрелки, чтобы создать полигон. Любой эффективный способ проверить это. Этот многоугольник может находиться в любом месте плоскости X-Y и может быть повернут на некоторый угол.


1 Ответов

Рейтинг:
8

AspDotNetDev

Вам понадобится не менее 3 точек, чтобы определить направление контура. Создайте луч, используя первые 2 точки (соединяя их, причем начало луча является первой точкой). Если третья точка находится "слева" от луча, то направление контура против часовой стрелки. Если третья точка находится" справа " от луча, то направление контура-по часовой стрелке.

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

Просто Быстрый совет, потому что я знаю, что эта основа математики может легко проскользнуть, как только у вас будет более высокая математика, наклон вычисляется по "подъему над пробегом" (то есть разности координат y между двумя точками, вычисляемые по разности координат x между этими же двумя точками). И вы, вероятно, будете хорошо использовать старое доброе уравнение наклона-перехвата "y = mx + b".

Да, и еще кое-что. Если у вас есть математическая библиотека, которую вы можете использовать, перекрестное произведение можно использовать для вычисления того, находятся ли 3 точки в ориентации по часовой стрелке или против часовой стрелки. Это распространенная техника в 3D-рендеринге. Просто сделайте треугольник из 3 точек. Вы можете прочитать больше об этой технике: здесь Использование этой методики должно ускорить расчет, если это важно.


lynx001

Я думаю, что это верно только для строго выпуклого многоугольника.