#include #include #include "vekt.h" /* Implementacija operacija s vektorima u R^3. */ /* ======================================================================== */ /* Euklidska norma vektora a. */ double norma(double a[]) { int i; double suma = 0.0; for (i = 0; i < 3; ++i) suma = suma + a[i] * a[i]; return sqrt(suma); } /* ======================================================================== */ /* Skalarni produkt vektora a i b. */ double skal_prod(double a[], double b[]) { int i; double suma = 0.0; for (i = 0; i < 3; ++i) suma = suma + a[i] * b[i]; return suma; } /* ======================================================================== */ /* Kosinus kuta izmedju dva vektora a i b. */ double kosinus_kuta(double a[], double b[]) { return skal_prod(a, b) / (norma(a) * norma(b)); } /* ======================================================================== */ /* Vektorski produkt vektora c = a * b. */ void vekt_prod(double a[], double b[], double c[]) { c[0] = a[1] * b[2] - a[2] * b[1]; c[1] = a[2] * b[0] - a[0] * b[2]; c[2] = a[0] * b[1] - a[1] * b[0]; return; } /* ======================================================================== */ /* Zbrajanje vektora c = a + b. */ void zbroj(double a[], double b[], double c[]) { int i; for (i = 0; i < 3; ++i) c[i] = a[i] + b[i]; return; } /* ======================================================================== */ /* Mnozenje vektora skalarom b = lambda * a. */ void skal(double a[], double lambda, double b[]) { int i; for (i = 0; i < 3; ++i) b[i] = lambda * a[i]; return; } /* ======================================================================== */ /* Ispis vektora. */ void vekt_print(double a[]) { printf("(%g, %g, %g)\n", a[0], a[1], a[2]); return; } /* ======================================================================== */