Вы должны знать, какой путь вокруг многоугольника определен, каким образом вершины обходят его.
Если вы этого не знаете, вы можете решить это, вычислив площадь многоугольника:
float Polygon::area() {
float result = 0.0f;
for(int a = 0; a < vertexCount; a ++) {
int b = (a+1) % vertexCount;
result += vertices[a].x * vertices[b].y;
result -= vertices[a].y * vertices[b].x;
}
return result * .5f;
}
Знак результата (положительного или отрицательного) скажет вам , является ли она по часовой стрелке или против часовой стрелки. Вы должны попробовать это, чтобы увидеть, какой путь вам нужен, потому что это зависит от вашей системы координат.
Если форма по часовой стрелке:
- Существо, идущее вперед по фигуре, идет по часовой стрелке , и
- Существо, идущее назад по фигуре, идет против часовой стрелки .
Если форма против часовой стрелки:
- Существо, идущее вперед по форме, идет против часовой стрелки , и
- Существо, идущее назад по форме, идет по часовой стрелке .