#include "ZGo.h"



//---- ZGoVECTOR -------------------------------------------------------------//

ZGoVECTOR::ZGoVECTOR(ZGo *zgo)
{
  this->zgo = zgo;
  x = y = z = 0;
}



ZGoVECTOR::ZGoVECTOR(ZGo *zgo, float x, float y, float z)
{
  this->zgo = zgo;
  this->x = x;
  this->y = y;
  this->z = z;
}



float ZGoVECTOR::dot(ZGoVECTOR *v)
{
  return x*v->x + y*v->y + z*v->z;
}



void ZGoVECTOR::cross(ZGoVECTOR *v, ZGoVECTOR *result)
{
  result->x = y*v->z - z*v->y;
  result->y = z*v->x - x*v->z;
  result->z = x*v->y - y*v->x;
}



void ZGoVECTOR::sub(ZGoVECTOR *v, ZGoVECTOR *result)
{
  result->x = x - v->x;
  result->y = y - v->y;
  result->z = z - v->z;
}



void ZGoVECTOR::unit()
{
  float d = x*x + y*y + z*z;
  if(d == 0) return;
  d = 1.0f/sqrt(d);

  x *= d;
  y *= d;
  z *= d;
}



//---- end of file -----------------------------------------------------------//
