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