Le produit croisé mesure le degré de perpendiculaire de deux vecteurs. Imaginez que chaque arête de votre polygone soit un vecteur dans le plan xy d'un espace xyz tridimensionnel (3-D). Alors le produit croisé de deux bords successifs est un vecteur dans la direction z (direction z positive si le deuxième segment est dans le sens horaire, moins direction z si c'est dans le sens antihoraire). La magnitude de ce vecteur est proportionnelle au sinus de l'angle entre les deux bords d'origine, il atteint donc un maximum quand ils sont perpendiculaires, et diminue progressivement pour disparaître lorsque les bords sont colinéaires (parallèles).
Donc, pour chaque sommet (point) du polygone, calculez la magnitude du produit croisé des deux bords adjacents:
Using your data:
point[0] = (5, 0)
point[1] = (6, 4)
point[2] = (4, 5)
point[3] = (1, 5)
point[4] = (1, 0)
Étiquetez donc les bords consécutivement, de même que
edgeA
le segment de point0
vers point1
et
edgeB
entre point1
à point2
...
edgeE
est entre point4
et point0
.
Alors le sommet A ( point0
) est entre
edgeE
[De point4
à point0
]
edgeA
[De point0
à `point1 '
Ces deux arêtes sont elles-mêmes vecteurs, dont les coordonnées x et y peuvent être déterminées en soustrayant les coordonnées de leurs points de début et de fin:
edgeE
= point0
- point4
= (1, 0) - (5, 0)
= (-4, 0)
et
edgeA
= point1
- point0
= (6, 4) - (1, 0)
= (5, 4)
et
Et le produit vectoriel de ces deux bords adjacents est calculée en utilisant le facteur déterminant de la matrice suivante, qui est réalisée en mettant les coordonnées des deux vecteurs ci - dessous les symboles représentant les trois axes de coordonnées ( i
, j
, et k
). La troisième coordonnée (zéro) est là parce que le concept de produit croisé est une construction 3D, et donc nous étendons ces vecteurs 2D en 3D afin d'appliquer le produit croisé:
i j k
-4 0 0
1 4 0
Étant donné que tous les produits croisés produisent un vecteur perpendiculaire au plan de deux vecteurs en cours de multiplication, le déterminant de la matrice ci-dessus n'a qu'une k
composante, (ou axe z).
La formule pour calculer la magnitude de la k
composante de l'axe ou z est
a1*b2 - a2*b1 = -4* 4 - 0* 1
= -16
La magnitude de cette valeur ( -16
), est une mesure du sinus de l'angle entre les 2 vecteurs d'origine, multipliée par le produit des magnitudes des 2 vecteurs.
En fait, une autre formule pour sa valeur est
A X B (Cross Product) = |A| * |B| * sin(AB)
.
Donc, pour revenir à une mesure de l'angle, vous devez diviser cette valeur, ( -16
), par le produit des grandeurs des deux vecteurs.
|A| * |B|
= 4 * Sqrt(17)
=16.4924...
Donc, la mesure du péché (AB) = -16 / 16.4924
=-.97014...
Il s'agit de mesurer si le segment suivant après le sommet s'est courbé à gauche ou à droite, et de combien. Il n'est pas nécessaire de prendre l'arc sinus. Tout ce qui nous importera, c'est son ampleur, et bien sûr son signe (positif ou négatif)!
Faites cela pour chacun des 4 autres points autour du chemin fermé et additionnez les valeurs de ce calcul à chaque sommet.
Si la somme finale est positive, vous êtes allé dans le sens horaire, négatif, anti-horaire.