Cvector3.cpp code

  1. //---------------------------------------------------------------------
  2. // Cvector3.cpp
  3. //---------------------------------------------------------------------
  4. #include "Cvector3.h"
  5. 
  6. Cvector3::Cvector3()
  7. {
  8.    x = y = z = 0.0;
  9. }
 10. Cvector3::Cvector3(float f)
 11. {
 12.    x = f; y = f; z = f;
 13. }
 14. Cvector3::Cvector3(float X, float Y, float Z)
 15. {
 16.    x = X; y = Y; z = Z;
 17. }
 18. Cvector3::Cvector3(const Cvector3 &Vect)
 19. {
 20.    x = Vect.x;
 21.    y = Vect.y;
 22.    z = Vect.z;
 23. }
 24. void Cvector3::operator =(float f)
 25. {
 26.    x=f;
 27.    y=f;
 28.    z=f;
 29. }
 30. void Cvector3::operator =(Cvector3 Vect)
 31. {
 32.    x = Vect.x;
 33.    y = Vect.y;
 34.    z = Vect.z;
 35. }
 36. //------------------------------------------------------------------------
 37. // Vector addition/subtraction/multiplication/division with another Vector
 38. //------------------------------------------------------------------------
 39. Cvector3 Cvector3::operator+(Cvector3 Vect)
 40. {
 41.    return Cvector3(Vect.x+x, Vect.y+y, Vect.z+z);
 42. }
 43. Cvector3 Cvector3::operator-(Cvector3 Vect)
 44. {
 45.    return Cvector3(x-Vect.x, y-Vect.y, z-Vect.z);
 46. }
 47. Cvector3 Cvector3::operator*(Cvector3 Vect)
 48. {
 49.    return Cvector3(x*Vect.x, y*Vect.y, z*Vect.z);
 50. }
 51. Cvector3 Cvector3::operator/(Cvector3 Vect)
 52. {
 53.    return Cvector3(x/Vect.x, y/Vect.y, z/Vect.z);
 54. }
 55. //------------------------------------------------------------------------
 56. // Vector addition/subtraction/multiplication/division with a scalar.
 57. //------------------------------------------------------------------------
 58. Cvector3 Cvector3::operator +(float f)
 59. {
 60.    return Cvector3(x+f, y+f, z+f);
 61. }
 62. Cvector3 Cvector3::operator -(float f)
 63. {
 64.    return Cvector3(x-f, y-f, z-f);
 65. }
 66. Cvector3 Cvector3::operator *(float f)
 67. {
 68.    return Cvector3(x*f, y*f, z*f);
 69. }
 70. Cvector3 Cvector3::operator /(float f)
 71. {
 72.    float recip;
 73.    if(f < 0.000001f)  f = 1.0f;
 74.    recip = 1.0/f;
 75.    return Cvector3(x*recip, y*recip, z*recip);
 76. }
 77. //------------------------------------------------------------------------
 78. // Vector addition/subtraction/multiplication/division with another Vector
 79. //------------------------------------------------------------------------
 80. void Cvector3::operator +=(Cvector3 Vect)
 81. {
 82.    x += Vect.x;
 83.    y += Vect.y;
 84.    z += Vect.z;
 85. }
 86. void Cvector3::operator -=(Cvector3 Vect)
 87. {
 88.    x -= Vect.x;
 89.    y -= Vect.y;
 90.    z -= Vect.z;
 91. }
 92. void Cvector3::operator *=(Cvector3 Vect)
 93. {
 94.    x *= Vect.x;
 95.    y *= Vect.y;
 96.    z *= Vect.z;
 97. }
 98. void Cvector3::operator /=(Cvector3 Vect)
 99. {
100.    x /= Vect.x;
101.    y /= Vect.y;
102.    z /= Vect.z;
103. }
104. //------------------------------------------------------------------------
105. // Vector addition/subtraction/multiplication/division with a scalar.
106. //------------------------------------------------------------------------
107. Cvector3 Cvector3::operator +=(float f)
108. {
109.    return Cvector3(x+f, y+f, z+f);
110. }
111. Cvector3 Cvector3::operator -=(float f)
112. {
113.    return Cvector3(x-f, y-f, z-f);
114. }
115. Cvector3 Cvector3::operator *=(float f)
116. {
117.    return Cvector3(x*f, y*f, z*f);
118. }
119. Cvector3 Cvector3::operator /=(float f)
120. {
121.    float recip;
122.    if(f < 0.000001f)  f = 1.0f;
123.    recip = 1.0/f;
124.    return Cvector3(x*recip, y*recip, z*recip);
125. }
126. //------------------------------------------------------------------------
127. // Magnitude(), Dot(), Cross(), and Normalize() Functions
128. //------------------------------------------------------------------------
129. float Cvector3::Magnitude()
130. {
131.    return( sqrt((x*x)+(y*y)+(z*z)) );
132. }
133. float Cvector3::Dot(Cvector3 Vect)
134. {
135.    return(x*Vect.x + y*Vect.y + z*Vect.z);
136. }
137. Cvector3 Cvector3::Cross(Cvector3 Vector1, Cvector3 Vector2)
138. {
139.    x = ((Vector1.y*Vector2.z)-(Vector1.z*Vector2.y));
140.    y = ((Vector1.z*Vector2.x)-(Vector1.x*Vector2.z));
141.    z = ((Vector1.x*Vector2.y)-(Vector1.y*Vector2.x));
142. }
143. void Cvector3::Normalize()
144. {
145.    float magnitude;
146.    magnitude = Magnitude();
147.    if(magnitude < 0.0000001f) magnitude = 1.0f;
148.    x = x/magnitude;
149.    y = y/magnitude;
150.    z = z/magnitude;
151. }
152. void Cvector3::DivideVectorByScaler(Cvector3 Vector1, float f)
153. {
154.     x = Vector1.x/f;
155.     y = Vector1.y/f;
156.     z = Vector1.z/f;
157. }

Back to PLY_with_Vertex_Normals