//---------------------------------------------------------------------------


#pragma hdrstop

#include "GLWektory.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

float* Roznica3fv(float punkt1[3],float punkt2[3],float wynik[3])
{
	for(int i=0;i<3;i++) wynik[i]=punkt2[i]-punkt1[i];
	return wynik;
}

float* IloczynWektorowy3fv(float a[3],float b[3],float wynik[3])
{
	const int x=0;
	const int y=1;
	const int z=2;

	wynik[x]=  a[y]*b[z]-a[z]*b[y];
	wynik[y]=-(a[x]*b[z]-a[z]*b[x]);
	wynik[z]=  a[x]*b[y]-a[y]*b[x];
	return wynik;
}

#define SQR(x) ((x)*(x))
#include <math.h>  //sqrt

float* NormujWektor3fv(float wektor[3])
{
	float wsp=0;
	for(int i=0;i<3;i++) wsp+=SQR(wektor[i]);
	wsp=sqrt(wsp);
	for(int i=0;i<3;i++) wektor[i]/=wsp;
	return wektor;
}

float* JednostkowyWektorNormalny3fv(float punkt1[3],float punkt2[3],float punkt3[3],float wynik[3])
{
	float wektor12[3],wektor13[3];
	return NormujWektor3fv(IloczynWektorowy3fv(Roznica3fv(punkt1,punkt2,wektor12),Roznica3fv(punkt1,punkt3,wektor13),wynik));
}
