AspDotNetDev
Вам понадобится не менее 3 точек, чтобы определить направление контура. Создайте луч, используя первые 2 точки (соединяя их, причем начало луча является первой точкой). Если третья точка находится "слева" от луча, то направление контура против часовой стрелки. Если третья точка находится" справа " от луча, то направление контура-по часовой стрелке.
Вы можете проверить, находится ли третья точка слева или справа от луча, проверив наклон луча, а затем посмотрев, находится ли точка выше или ниже точки на луче, которая имеет ту же координату x, что и третья точка. Нужно обратить внимание на то, что наклон луча равен бесконечности (То есть вертикальной линии). В этом частном случае все, что вам нужно сделать, это проверить, находится ли точка слева или справа от координаты луча. Если наклон равен нулю (то есть горизонтальная линия), вы просто проверяете, находится ли третья точка выше или ниже y-координаты луча.
Просто Быстрый совет, потому что я знаю, что эта основа математики может легко проскользнуть, как только у вас будет более высокая математика, наклон вычисляется по "подъему над пробегом" (то есть разности координат y между двумя точками, вычисляемые по разности координат x между этими же двумя точками). И вы, вероятно, будете хорошо использовать старое доброе уравнение наклона-перехвата "y = mx + b".
Да, и еще кое-что. Если у вас есть математическая библиотека, которую вы можете использовать, перекрестное произведение можно использовать для вычисления того, находятся ли 3 точки в ориентации по часовой стрелке или против часовой стрелки. Это распространенная техника в 3D-рендеринге. Просто сделайте треугольник из 3 точек. Вы можете прочитать больше об этой технике: здесь Использование этой методики должно ускорить расчет, если это важно.