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.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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);
  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. bool operator!() const;
  50. operator bool() const;
  51. protected:
  52. double _scalars[X];
  53. };
  54. tmpl QDebug operator<<(QDebug dbg, const VectorXD<X>& v);
  55. #include "vectorxd.hxx"
  56. #endif // VECTORXD_H