MyVector3.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include <iostream>
  2. #include "MyVector3.h"
  3. //========================================
  4. cMyVector3::cMyVector3 () :
  5. fX (0.0), fY (0.0), fZ (0.0) {}
  6. cMyVector3::cMyVector3 (double x_, double y_, double z_) :
  7. fX (x_), fY (y_), fZ (z_) {}
  8. cMyVector3::cMyVector3 (const double *array, int starter) :
  9. fX (array[0 + starter]), fY (array[1 + starter]), fZ (array[2 + starter]) {}
  10. cMyVector3::~cMyVector3() {}
  11. //=========================================
  12. double cMyVector3::operator () (int i) const{
  13. //dereferencing operator
  14. switch(i) {
  15. case 0:
  16. return fX;
  17. case 1:
  18. return fY;
  19. case 2:
  20. return fZ;
  21. default:
  22. std::cout << "not right i \n";
  23. }
  24. return fX;
  25. }
  26. //=========================================
  27. inline double cMyVector3::x () const { return fX; }
  28. inline double cMyVector3::y () const { return fY; }
  29. inline double cMyVector3::z () const { return fZ; }
  30. inline double cMyVector3::X () const { return fX; }
  31. inline double cMyVector3::Y () const { return fY; }
  32. inline double cMyVector3::Z () const { return fZ; }
  33. inline double cMyVector3::Px () const { return fX; }
  34. inline double cMyVector3::Py () const { return fY; }
  35. inline double cMyVector3::Pz () const { return fZ; }
  36. // function for operation with vectors
  37. cMyVector3 operator + (const cMyVector3 &, const cMyVector3 &); // +
  38. cMyVector3 operator - (const cMyVector3 &, const cMyVector3 &); // +
  39. double operator * (const cMyVector3 &, const cMyVector3 &); // +
  40. cMyVector3 operator * (const cMyVector3 &, double a); // +
  41. cMyVector3 operator * (double a, const cMyVector3 &); // +
  42. //cMyVector3 operator * (const TMatrix &, const cMyVector3 &);
  43. //---------------------------------------------------------------------------------------------------
  44. //=========================================
  45. inline void cMyVector3::SetXYZ (double x_, double y_, double z_) {
  46. fX = x_;
  47. fY = y_;
  48. fZ = z_;
  49. }
  50. //=========================================
  51. inline void cMyVector3::SetX (double xx) { fX = xx; }
  52. inline void cMyVector3::SetY (double yy) { fY = yy; }
  53. inline void cMyVector3::SetZ (double zz) { fZ = zz; }
  54. //=========================================
  55. inline cMyVector3 & cMyVector3::operator = (const cMyVector3 & p) {
  56. fX = p.fX;
  57. fY = p.fY;
  58. fZ = p.fZ;
  59. return *this;
  60. }
  61. //=========================================
  62. inline void cMyVector3::GetXYZ (double *carray, int starter) const {
  63. carray [0 + starter] = fX;
  64. carray [1 + starter] = fY;
  65. carray [2 + starter] = fZ;
  66. }
  67. //---------------------------------------------------------------------------------------------------
  68. //=========================================
  69. inline double cMyVector3::Dot(const cMyVector3 & p) const {
  70. return fX*p.fX + fY*p.fY + fZ*p.fZ;
  71. }
  72. //=========================================
  73. inline bool cMyVector3::operator == (const cMyVector3& v) const {
  74. return (v.fX == fX && v.fY == fY && v.fZ == fZ) ? true : false;
  75. }
  76. //=========================================
  77. inline bool cMyVector3::operator != (const cMyVector3& v) const {
  78. return (v.fX != fX || v.fY != fY || v.fZ != fZ) ? true : false;
  79. }
  80. //=========================================
  81. inline cMyVector3& cMyVector3::operator += (const cMyVector3 & p) {
  82. fX += p.fX;
  83. fY += p.fY;
  84. fZ += p.fZ;
  85. return *this;
  86. }
  87. //=========================================
  88. inline cMyVector3& cMyVector3::operator -= (const cMyVector3 & p) {
  89. fX -= p.fX;
  90. fY -= p.fY;
  91. fZ -= p.fZ;
  92. return *this;
  93. }
  94. //=========================================
  95. inline cMyVector3 cMyVector3::operator - () const {
  96. return cMyVector3(-fX, -fY, -fZ);
  97. }
  98. //=========================================
  99. inline cMyVector3& cMyVector3::operator *= (double a) {
  100. fX *= a;
  101. fY *= a;
  102. fZ *= a;
  103. return *this;
  104. }
  105. //=========================================
  106. cMyVector3 operator + (const cMyVector3 & a, const cMyVector3 & b) {
  107. return cMyVector3 (a.X() + b.X(), a.Y() + b.Y(), a.Z() + b.Z());
  108. }
  109. //=========================================
  110. cMyVector3 operator - (const cMyVector3 & a, const cMyVector3 & b) {
  111. return cMyVector3 (a.X() - b.X(), a.Y() - b.Y(), a.Z() - b.Z());
  112. }
  113. //=========================================
  114. cMyVector3 operator * (const cMyVector3 & p, double a) {
  115. return cMyVector3 (a*p.X(), a*p.Y(), a*p.Z());
  116. }
  117. //=========================================
  118. cMyVector3 operator * (double a, const cMyVector3 & p) {
  119. return cMyVector3 (a*p.X(), a*p.Y(), a*p.Z());
  120. }
  121. //=========================================
  122. double operator * (const cMyVector3 & a, const cMyVector3 & b) {
  123. return a.Dot(b);
  124. }