Produk silang mengukur tingkat tegak lurus dua vektor. Bayangkan bahwa setiap tepi poligon Anda adalah vektor dalam bidang xy dari ruang xyz tiga dimensi (3-D). Maka produk silang dari dua sisi yang berurutan adalah vektor dalam arah-z, (arah-z positif jika segmen kedua searah jarum jam, minus arah-z jika berlawanan arah jarum jam). Besarnya vektor ini sebanding dengan sinus sudut antara dua tepi asli, sehingga mencapai maksimum ketika mereka tegak lurus, dan berangsur-angsur menghilang ketika ujung-ujungnya adalah collinear (paralel).
Jadi, untuk setiap titik (titik) poligon, hitung besarnya produk-silang dari dua sisi yang bersebelahan:
Using your data:
point[0] = (5, 0)
point[1] = (6, 4)
point[2] = (4, 5)
point[3] = (1, 5)
point[4] = (1, 0)
Jadi beri label pada tepinya secara berurutan seperti
edgeA
segmen dari point0
ke point1
dan
edgeB
antara point1
ke point2
...
edgeE
adalah antara point4
dan point0
.
Kemudian Vertex A ( point0
) berada di antara
edgeE
[Dari point4
ke point0
]
edgeA
[Dari point0
ke `titik1 '
Kedua tepi ini sendiri adalah vektor, yang koordinat x dan y dapat ditentukan dengan mengurangi koordinat titik awal dan akhir mereka:
edgeE
= point0
-point4
= (1, 0) - (5, 0)
= (-4, 0)
dan
edgeA
= point1
- point0
= (6, 4) - (1, 0)
= (5, 4)
dan
Dan produk silang dari dua tepi ini berdampingan dihitung dengan menggunakan determinan dari matriks berikut, yang dibangun dengan menempatkan koordinat dua vektor di bawah simbol yang mewakili tiga sumbu koordinat ( i
, j
, & k
). Koordinat bernilai-ketiga (nol) ada karena konsep produk silang adalah konstruk 3-D, jadi kami memperluas vektor 2-D ini menjadi 3-D untuk menerapkan produk-silang:
i j k
-4 0 0
1 4 0
Mengingat bahwa semua produk silang menghasilkan vektor tegak lurus terhadap bidang dua vektor yang dikalikan, penentu matriks di atas hanya memiliki k
komponen, (atau sumbu z).
Rumus untuk menghitung besarnya k
komponen sumbu z adalah
a1*b2 - a2*b1 = -4* 4 - 0* 1
= -16
Besarnya nilai ini ( -16
), adalah ukuran sinus sudut antara 2 vektor asli, dikalikan dengan produk dari besarnya 2 vektor.
Sebenarnya, formula lain untuk nilainya adalah
A X B (Cross Product) = |A| * |B| * sin(AB)
.
Jadi, untuk kembali ke ukuran sudut yang Anda butuhkan untuk membagi nilai ini, ( -16
), dengan produk dari besarnya dua vektor.
|A| * |B|
= 4 * Sqrt(17)
=16.4924...
Jadi ukuran dosa (AB) = -16 / 16.4924
=-.97014...
Ini adalah ukuran apakah segmen berikutnya setelah simpul telah membungkuk ke kiri atau ke kanan, dan seberapa banyak. Tidak perlu minum arc-sinus. Yang akan kita pedulikan hanyalah besarnya, dan tentu saja tandanya (positif atau negatif)!
Lakukan ini untuk masing-masing 4 poin lainnya di sekitar jalur tertutup, dan tambahkan nilai-nilai dari perhitungan ini di setiap titik.
Jika jumlah akhir positif, Anda bergerak searah jarum jam, negatif, berlawanan arah jarum jam.