Comment faire pour déterminer si une liste de polygones points sont dans le sens horaire?

Avoir une liste de points, comment savoir si ils sont dans le sens horaire?

Par exemple:

point[0] = (5,0)
point[1] = (6,4)
point[2] = (4,5)
point[3] = (1,5)
point[4] = (1,0)

dirais qu'il est anti-horaire (ou l'inverse, pour certaines personnes).

  • VEUILLEZ NOTER: La accepté de répondre, et beaucoup de réponses après elle, ont besoin de beaucoup d'additions et de multiplications (ils sont basés sur des calculs de la zone cette fin, positif ou négatif; par exemple, "lacet formule"). Avant de mettre en œuvre l'un de ces, envisagez de de lhf réponse, ce qui est plus simple/rapide basé sur wiki - orientation de la simple polygone.
  • Je pense toujours en termes de produit vectoriel de deux vecteurs adjacents. Si je marche autour du périmètre du polygone ma tête les points de sortie de l'avion. Je traverse le plan de vecteur dans ma marche vecteur de direction pour obtenir la troisième direction dans mon système de coordonnées. Si ce vecteur de points, de sorte que l'intérieur est sur ma gauche c'est dans le sens antihoraire; si l'intérieur est à ma droite, c'est dans le sens horaire.
InformationsquelleAutor Stécy | 2009-07-22