You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

vectorxd.h 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef VECTORXD_H
  2. #define VECTORXD_H
  3. #include <QDebug>
  4. #define tmpl template<unsigned X>
  5. tmpl class VectorXD
  6. {
  7. public:
  8. VectorXD();
  9. VectorXD(const double scalars[X]);
  10. VectorXD(const VectorXD<X>& other);
  11. VectorXD<X>& setScalar(unsigned i, double value);
  12. double getScalar(unsigned i) const;
  13. bool isNull() const;
  14. bool equal(const VectorXD<X>& other) const;
  15. VectorXD<X>& add(double k);
  16. VectorXD<X>& add(double scalars[X]);
  17. VectorXD<X>& add(const VectorXD<X>& other);
  18. VectorXD<X>& sub(double k);
  19. VectorXD<X>& sub(double scalars[X]);
  20. VectorXD<X>& sub(const VectorXD<X>& other);
  21. VectorXD<X>& mult(double k);
  22. VectorXD<X>& mult(double scalars[X]);
  23. VectorXD<X>& mult(const VectorXD<X>& k);
  24. VectorXD<X>& div(double k);
  25. VectorXD<X>& div(double scalars[X]);
  26. VectorXD<X>& div(const VectorXD<X>& k);
  27. double dotProduct(const VectorXD<X>& other) const;
  28. VectorXD<X>& crossProduct(const VectorXD<X>& other);
  29. static VectorXD<X> crossProduct(const VectorXD<X> &v1, const VectorXD<X> &v2);
  30. double norm() const;
  31. VectorXD<X> operator+() const;
  32. VectorXD<X> operator+(const double& k) const;
  33. VectorXD<X>& operator+=(const double& k);
  34. VectorXD<X> operator+(const VectorXD<X>& other) const;
  35. VectorXD<X>& operator+=(const VectorXD<X>& other);
  36. VectorXD<X> operator-() const;
  37. VectorXD<X> operator-(const double& k) const;
  38. VectorXD<X>& operator-=(const double& k);
  39. VectorXD<X> operator-(const VectorXD<X>& other) const;
  40. VectorXD<X>& operator-=(const VectorXD<X>& other);
  41. VectorXD<X> operator*(const double& k) const;
  42. VectorXD<X>& operator*=(const double& k);
  43. VectorXD<X> operator*(const VectorXD<X>& other) const;
  44. VectorXD<X>& operator*=(const VectorXD<X>& other);
  45. VectorXD<X> operator/(const double& k) const;
  46. VectorXD<X>& operator/=(const double& k);
  47. bool operator==(const VectorXD<X>& other) const;
  48. bool operator!=(const VectorXD<X>& other) const;
  49. double operator[](unsigned i) const;
  50. bool operator!() const;
  51. operator bool() const;
  52. protected:
  53. double _scalars[X];
  54. };
  55. tmpl QDebug operator<<(QDebug dbg, const VectorXD<X>& v);
  56. #include "vectorxd.hxx"
  57. #endif // VECTORXD_H