/*
 * ICOM 4035 - Data Structures
 * Dr. Manuel Rodriguez-Martinez
 * Department of Electrical and Computer Engineering
 * University of Puerto Rico, Mayaguez
 * 
 * This file name: Vector.h
 *
 * This file declares the interface of the Vector class.
 *
 */

#ifndef _VECTOR_ND_H
#define _VECTOR_ND_H

#include <cmath>
#include "Matrix.h"

namespace uprm_icom4035 {
  
  class Vector : public Matrix {
  public:
    // Constructor
    Vector(int dimensions = 3);
    
    // Return number of dimensions
    size_type get_dimensions() const {return this->get_rows();}
    // Returns a given coordinate
    value_type get_coord(int coord) const {return this->get_value(coord,0);}
    // Sets a given coordinate
    void set_coord(int coord, value_type new_val) 
      {this->set_value(coord, 0, new_val);}
    // Vector Magnitude
    double length() const;
    
    // Vector Inner Product
    double operator|(const Vector& V) const;

    // Angle between vectors
    double angle(const Vector& V) const;
   };

  
}
#endif 
