#include "My3Vector.h" #include #include // implementation My3Vector::My3Vector() { // default constructor x = 0.; y = 0.; z = 0.; // set coords to 0. } My3Vector::My3Vector( double xv, double yv, double zv ) { x = xv; y = yv; z = zv; // take args for coords } // get length of vector double My3Vector::Length(){ return( sqrt( x*x + y*y +z*z ) ); } // access elements double My3Vector::X() { return x; } double My3Vector::Y() { return y; } double My3Vector::Z() { return z; } // add My3Vector My3Vector::Add( My3Vector & p ) { My3Vector t; t.x = x + p.x; t.y = y + p.y; t.z = z + p.z; return( t ); } void My3Vector::Print( ) { std::cout << "( " << x << ", " << y << ", " << z << " )" << std::endl; } double My3Vector::Dot(My3Vector & v) { return( x*v.x + y*v.y + z*v.z ); } double My3Vector::Angle(My3Vector & v) { double ltot = Length()*v.Length(); if( ltot <= 0) { return 0.0; } else{ double arg = Dot(v)/ltot; if(arg > 1.0) arg = 1.0; if(arg < -1.0) arg = -1.0; return acos(arg)*180./M_PI; } }