Вам потрібно знати, яким шляхом визначений багатокутник, яким шляхом вершини обходять його.
Якщо ви цього не знаєте, ви можете це обробити, обчисливши площу багатокутника:
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;
}
Знак результату (позитивного або негативного) скаже вам , чи є вона по годинниковою стрілкою або проти годинникової стрілки. Вам потрібно спробувати це, щоб побачити, який шлях для вас оточує, оскільки це залежить від вашої системи координат.
Якщо форма за годинниковою стрілкою:
- Істота, що йде вперед навколо форми, йде за годинниковою стрілкою , і
- Істота, що йде назад навколо форми, йде проти годинникової стрілки .
Якщо форма проти годинникової стрілки:
- Істота, що йде вперед навколо форми, йде проти годинникової стрілки , і
- Істота, що йде назад навколо форми, йде за годинниковою стрілкою .