#include 
#include "vector.h"


Vector g3_mkvec(x, y, z)
     double x, y, z;
{
  Vector v;

  v.x = x;
  v.y = y;
  v.z = z;
  return  v;
}

Vector g3_scalev(a, v)
     double  a;
     Vector  v;
{
  Vector a_v;

  a_v.x = a * v.x;
  a_v.y = a * v.y;
  a_v.z = a * v.z;
  return a_v;
}


Vector g3_sumv(u, v)
     Vector u, v;
{
  Vector u_sum_v;

  u_sum_v.x =    u.x  + v.x;
  u_sum_v.y =    u.y  + v.y;
  u_sum_v.z =    u.z  + v.z;
  return  u_sum_v;
}


Vector g3_diffv(u,v)
     Vector u, v;
{
  Vector u_diff_v;

  u_diff_v.x =    u.x  - v.x;
  u_diff_v.y =    u.y  - v.y;
  u_diff_v.z =    u.z  - v.z;
  return u_diff_v;
}


Vector  g3_lerpvec(v1, v2, t)
     Vector v1, v2;
     double t;
{
  return g3_sumv( v1, g3_scalev( t, g3_diffv( v2, v1 ) ) );
}


double g3_dot(u,v)
     Vector u, v;
{
  return(u.x * v.x + u.y * v.y + u.z * v.z);
}


double g3_norm(v)
     Vector v;
{
  return sqrt((v.x * v.x + v.y * v.y + v.z * v.z));
}