Możesz określić kąt dwóch wektorów, po prostu pobierając produkt skalarny (produkt kropkowany).Użyteczną właściwością jest to, że jeśli wektory są ortogonalne, ich iloczyn skalarny wynosi zero; jeśli ich kąt jest rozwarty, produkt jest ujemny, w przeciwnym razie dodatni. Tak, kroki podjąć to:
- znaleźć pierwszą krawędź z V0 V1 (jako wektor, można uzyskać to poprzez odjęcie współrzędne), następnie obrócić go o 90 stopni w lewo (jest to po prostu przekształcenie
(x y)
do (-y x)
)
- znaleźć drugą krawędź od V1 do V2 (nie obraca się)
- wziąć produkt skalarne (to tylko
(x1 * x2) + (y1 * y2)
)
- jeżeli iloczyn skalarny jest ujemny, to jest skręt w prawo, w przeciwnym razie skręt w lewo
- następna krawędź ...
- jeśli przejdziesz przez wierzchołki przeciwnie do ruchu wskazówek zegara, policz liczbę prawych nawrotów, w przeciwnym razie liczba lewych zwojów
- dla ostatniego wierzchołka, musisz wrócić do pierwszego (tj. wykorzystywać krawędzie VN do V0 i V0 V1)
zmienił: Można znaleźć czy wierzchołki są uporządkowane w lewo lub w prawo, stosując następujący wzór do obliczania powierzchni wielokąta za:
1 n-1
A = --- SUM(x(i)*y(i+1) - x(i+1)*y(i))
2 i=0
gdzie n
jest liczbą wierzchołków. x(n)
i y(n)
są takie same, jak x(0)
i y(0)
(aby zamknąć wielokąt).
Jeśli jest dodatnia, to wierzchołki są porządkowane w kierunku przeciwnym do ruchu wskazówek zegara, w przeciwnym razie zgodnie z ruchem wskazówek zegara.
edit: Kiedy uprościć etapy obrotu oraz iloczynem skalarnym, po przybyciu na wzorze na dwuwymiarowym produktu krzyż, x1*y2 - x2*y1
. Upraszcza to powyższe pierwsze etapy:
- znaleźć pierwszą krawędź z V0, V1 (jako wektor, odejmując współrzędnych)
- dito do drugiej krawędzi V1 V2
- się produkt poprzeczny
((x1 * y2) - (x2 * y1))
- jeśli produkt krzyż jest pozytywna, to jest skręt w lewo
Przepraszamy za pokrętny pierwszym podejściu.
Nie można definiować wielokąta jedynie za pomocą wierzchołków. Ty też możesz określać boki. –
Mam wierzchołek w porządku, więc nie potrzebuję boków. – lucasbls1
Wierzchołki definiują punkty, które byłyby połączone (boki) w celu nadania wielokątu. – Swinders