Grafika komputerowa.

Iloczyn skalarny i wektorowy

Iloczyn wektorowy niezbędny do znalezienia normalnej do powierzchni wynosi:
vector.x = (v1.y * v2.z) - (v1.z * v2.y);
vector.y = (v1.z * v2.x) - (v1.x * v2.z);
vector.z = (v1.x * v2.y) - (v1.y * v2.x);
By mieć normalną ten wektor musimy podzielić przez jego długość - liczymy z prozaicznego twierzdzenia Pitagorasa). (Jest to tak zwana normalizacja wektora). Iloczyn skalarny jest niezbędny do obliczenia kątu (ściślej mówiąc jego kosinusa), jaki tworzy wektor normalnej z wektorem (wektorami światła) światła. Gdy mamy więcej świateł i związanych z nimi wektorów oświetlających dany obiekt (np. 4), wówczs polecam zrobić buforowanie.
Iloczyn skalarny(dot product) liczymy:
dot_product = |a| * |b| * cos(a) ;
gdzie |a| i |b| to długości odpowiednich wektorów (wektor światła i wektor normalnej do powierzchni), ponieważ te wektory są znormalizowane, ich długości są równe 1.
dot_product = (v1.x * v2.x) + (v1.y * v2.y) + (v1.z * v2.z)
czyli: cos (a) = (v1.x * v2.x) + (v1.y * v2.y) + (v1.z * v2.z)