Vektorski i Skalarni Proizvod
U ovoj lekciji učimo kako da množimo vektore - i zašto je to zaista korisno
Skalarni proizvod
Skalarni proizvod je prvi način na koji možemo da pomnožimo vektore. Piše se kao
Računa se ovako:
Koristan je zato što nam govori da li su dva vektora normalna jedan na drugi.
Normalni vektori
Normalni vektori su vektori koji zaklapaju ugao od 90°
Ako je skalarni proizvod 2 vektora 0, onda su oni normalni jedan na drugi.

Implementacija
Pretpostavimo da su svi vektori implementirani ovako:
struct v{
long long x;
long long y;
};Skalarni proizvod je:
int dot_product(v a, v b){
return (a.x * b.x) + (a.y * b.y);
}Vektorski proizvod
Drugi, i korisniji način množenja je vektorski proizvod.
Pomoću njega možemo da izračunamo da li je poligon konveksan ili nije, da li su dva vektora paralelna, da li se dva vektora seku, i tako dalje..
Vektorski proizvod za dva 2D vektora svodi se na računanje determinante njihovih koordinata. Piše se kao
Što znači:
Znak vektorskog proizvoda nam govori gde se dva vektora nalaze jedan u odnosu na drugi.
Čitanje vektorskog proizvoda
Zamisli da vektori seku krug.
Kada izračunamo vektorski proizvod , ako je proizvod pozitivan, onda se po krugu, da bismo stigli od do , krećemo suprotno od kazaljke na satu.
Ako je proizvod negativan, da bismo stigli od do , krećemo se u smeru kazaljke na satu.
Ako je proizvod 0, onda su i paralelni!

Površina trougla
Znak nije jedino što nam vektorski proizvod daje. Korisna je i sama njegova vrednost.
Uzmi i , dva vektora koja polaze iz iste tačke A, i dopuni ih do paralelograma. Apsolutna vrednost vektorskog proizvoda je tačno površina tog paralelograma.
Taj paralelogram su dva ista trougla ABC, pa površinu prepolovimo:
Proverimo to na trouglu čiju površinu znamo i bez ovoga. Neka je A = (0, 0), B = (4, 0) i C = (0, 3):
- i
- pa je površina
12 / 2 = 6
A to je pravougli trougao sa katetama 4 i 3, čiju površinu već znamo: .
Primeti da nam vektorski proizvod daje dvostruku površinu, a ta dvostruka vrednost je uvek ceo broj. Zato površine možemo da računamo tačno u tipu long long i da delimo sa 2 tek na samom kraju - trik koji ćemo u narednim lekcijama stalno koristiti.
Napomena:
Bez apsolutne vrednosti površina ima znak, baš kao i ranije: pozitivna je kada jeClevo odAB, a negativna kada je desno. Jedan broj, dva odgovora.
Implementacija
int cross_product(v a, v b){
return (a.x * b.y) - (a.y * b.x);
}