/* Performs geometrical transformations (rotation, translation) on a vector */

#ifndef VECTORTRANSFORM_H
#define VECTORTRANSFORM_H

#include <vector>
#include <string>

#include "RotationMatrix.h"

class VectorTransform {
 public:
  VectorTransform(std::vector<double> vec);
  void Translate(double xComp, double yComp, double zComp, std::string opt);
  void Rotate(double angle, RotationMatrix::eAxis axis, std::string opt);
  void Rotate(std::vector<double> matrixElements, std::string opt); // matrix elements row by row
  double GetX() {return v[0];}
  double GetY() {return v[1];}
  double GetZ() {return v[2];}
  void Print();

 private:
  std::vector<double> v = std::vector<double>(3);
};

#endif // VECTORTRANSFORM_H