Produkt przekroju mierzy stopień prostopadłej-ności dwóch wektorów. Wyobraź sobie, że każda krawędź twojego wielokąta jest wektorem w płaszczyźnie xy trójwymiarowej (3-D) przestrzeni xyz. Zatem iloczynem krzyżowym dwóch kolejnych krawędzi jest wektor w kierunku Z (dodatni kierunek Z, jeśli drugi segment jest zgodny z ruchem wskazówek zegara, minus kierunek Z, jeśli jest przeciwny do ruchu wskazówek zegara). Wielkość tego wektora jest proporcjonalna do sinusa kąta między dwiema oryginalnymi krawędziami, więc osiąga maksimum, gdy są one prostopadłe, i zwęża się, aby znikać, gdy krawędzie są współliniowe (równoległe).
Tak więc dla każdego wierzchołka (punktu) wielokąta oblicz wielkość iloczynu krzyżowego dwóch sąsiednich krawędzi:
Using your data:
point[0] = (5, 0)
point[1] = (6, 4)
point[2] = (4, 5)
point[3] = (1, 5)
point[4] = (1, 0)
Więc Wytwórnia krawędzie kolejno jak
edgeA
to segment od point0
do point1
i
edgeB
pomiędzy point1
do point2
...
edgeE
znajduje się pomiędzy point4
i point0
.
Zatem wierzchołek A ( point0
) znajduje się między
edgeE
[Od point4
do point0
]
edgeA
[Od point0
do `point1 '
Te dwie krawędzie same są wektorami, których współrzędne xiy można określić, odejmując współrzędne ich punktów początkowego i końcowego:
edgeE
= point0
- point4
= (1, 0) - (5, 0)
= (-4, 0)
i
edgeA
= point1
- point0
= (6, 4) - (1, 0)
= (5, 4)
i
A iloczyn z tych dwóch przylegających krawędzi jest obliczana przy użyciu determinantę poniższej macierzy, która jest wykonana przez umieszczenie współrzędne dwóch wektorów poniżej symboli reprezentujących trzy oś współrzędnych ( i
, j
, i k
). Trzecia (zerowa) współrzędna wartościowana istnieje, ponieważ koncepcja produktu krzyżowego jest konstrukcją 3-D, dlatego rozszerzamy te wektory 2-D na 3-D, aby zastosować produkt krzyżowy:
i j k
-4 0 0
1 4 0
Biorąc pod uwagę, że wszystkie produkty krzyżowe wytwarzają wektor prostopadły do płaszczyzny dwóch wektorów, które są mnożone, wyznacznik powyższej macierzy ma tylko k
składnik (lub oś Z).
Wzór na obliczenie wielkości k
składnika w osi Z wynosi
a1*b2 - a2*b1 = -4* 4 - 0* 1
= -16
Wielkość tej wartości ( -16
) jest miarą sinusoidy kąta między 2 oryginalnymi wektorami, pomnożonej przez iloczyn wielkości 2 wektorów.
W rzeczywistości inna formuła dla jego wartości to
A X B (Cross Product) = |A| * |B| * sin(AB)
.
Aby więc wrócić do miary kąta, należy podzielić tę wartość ( -16
) przez iloczyn wielkości dwóch wektorów.
|A| * |B|
= 4 * Sqrt(17)
=16.4924...
Więc miara grzechu (AB) = -16 / 16.4924
=-.97014...
Jest to miara tego, czy następny segment po wierzchołku wygiął się w lewo lub w prawo i o ile. Nie ma potrzeby stosowania sinusoidy. Wszystko, na czym nam zależy, to jego wielkość i oczywiście jej znak (pozytywny lub negatywny)!
Zrób to dla każdego z pozostałych 4 punktów wokół zamkniętej ścieżki i dodaj wartości z tego obliczenia dla każdego wierzchołka.
Jeśli końcowa suma jest dodatnia, poszedłeś zgodnie z ruchem wskazówek zegara, ujemny, przeciwnie do ruchu wskazówek zegara.