/* NAME: Kirill Vasil'evich Timofeev, 322
 * ASGN: N1
 */

#include "Vector3D.h"
#include <math.h>

Vector3D::Vector3D()
{
    X = 0;
    Y = 0;
    Z = 0;
}

Vector3D::~Vector3D(){}

Vector3D::Vector3D(const float x, const float y, const float z)
{
    X = x;
    Y = y;
    Z = z;
}

Vector3D::Vector3D(const Vector3D &V)
{
    X = V.X;
    Y = V.Y;
    Z = V.Z;
}

Vector3D Vector3D::operator+ (const Vector3D &V)
{
    return Vector3D(X + V.X, Y + V.Y, Z + V.Z);
}

Vector3D Vector3D::operator+= (const Vector3D &V)
{
    return Vector3D(X += V.X, Y += V.Y, Z += V.Z);
}

Vector3D Vector3D::operator* (const float t)
{
    return Vector3D(t * X, t * Y, t * Z);
}

Vector3D Vector3D::operator- (const Vector3D &V)
{
    return Vector3D(X - V.X, Y - V.Y, Z - V.Z);
}

Vector3D Vector3D::operator- ()
{
    return Vector3D(-X, -Y, -Z);
}

float Vector3D::operator* (Vector3D &V)
{
    return (X*V.X + Y*V.Y + Z*V.Z);
}

float Vector3D::Length()
{
    return sqrt(X*X + Y*Y + Z*Z);
}

float Vector3D::SqrLen()
{
    return (X*X + Y*Y + Z*Z);
}

Vector3D Vector3D::NormVect()
{
    float d = Length();
    return Vector3D(X/d, Y/d, Z/d);
}

