|
47 |
{ |
47 |
{ |
48 |
} |
48 |
} |
49 |
|
49 |
|
|
|
50 |
double |
51 |
Vector3D::GetLength () const |
52 |
{ |
53 |
return sqrt (x*x + y*y + z*z); |
54 |
} |
55 |
|
56 |
Vector3D& |
57 |
Vector3D::operator += (const Vector3D &v) |
58 |
{ |
59 |
x += v.x; |
60 |
y += v.y; |
61 |
z += v.z; |
62 |
|
63 |
return *this; |
64 |
} |
65 |
|
66 |
Vector3D& |
67 |
Vector3D::operator += (double v) |
68 |
{ |
69 |
x += v; |
70 |
y += v; |
71 |
z += v; |
72 |
|
73 |
return *this; |
74 |
} |
75 |
|
76 |
Vector3D |
77 |
Vector3D::operator + (const Vector3D &v) const |
78 |
{ |
79 |
return Vector3D (x+v.x, y+v.y, z+v.z); |
80 |
} |
81 |
|
82 |
Vector3D |
83 |
Vector3D::operator + (double v) const |
84 |
{ |
85 |
return Vector3D (x+v, y+v, z+v); |
86 |
} |
87 |
|
88 |
Vector3D |
89 |
Vector3D::operator * (const Vector3D &v) const |
90 |
{ |
91 |
return Vector3D (x*v.x, y*v.y, z*v.z); |
92 |
} |
93 |
|
94 |
Vector3D |
95 |
Vector3D::operator * (double v) const |
96 |
{ |
97 |
return Vector3D (x*v, y*v, z*v); |
98 |
} |
99 |
|
100 |
Vector3D |
101 |
Vector3D::operator - (const Vector3D &v) const |
102 |
{ |
103 |
return Vector3D (x-v.x, y-v.y, z-v.z); |
104 |
} |
105 |
|
106 |
Vector3D |
107 |
Vector3D::operator / (double div) const |
108 |
{ |
109 |
return Vector3D (x/div, y/div, z/div); |
110 |
} |
111 |
|
50 |
Vector2D::Vector2D (double _x, double _y) |
112 |
Vector2D::Vector2D (double _x, double _y) |
51 |
: x (_x), |
113 |
: x (_x), |
52 |
y (_y) |
114 |
y (_y) |
|
60 |
} |
122 |
} |
61 |
|
123 |
|
62 |
double |
124 |
double |
|
|
125 |
Vector2D::GetLength () const |
126 |
{ |
127 |
return sqrt (x*x + y*y); |
128 |
} |
129 |
|
130 |
Vector2D& |
131 |
Vector2D::operator += (const Vector2D &v) |
132 |
{ |
133 |
x += v.x; |
134 |
y += v.y; |
135 |
|
136 |
return *this; |
137 |
} |
138 |
|
139 |
Vector2D& |
140 |
Vector2D::operator += (double v) |
141 |
{ |
142 |
x += v; |
143 |
y += v; |
144 |
|
145 |
return *this; |
146 |
} |
147 |
|
148 |
Vector2D |
149 |
Vector2D::operator + (const Vector2D &v) const |
150 |
{ |
151 |
return Vector2D (x+v.x, y+v.y); |
152 |
} |
153 |
|
154 |
Vector2D |
155 |
Vector2D::operator + (double v) const |
156 |
{ |
157 |
return Vector2D (x+v, y+v); |
158 |
} |
159 |
|
160 |
Vector2D |
161 |
Vector2D::operator * (const Vector2D &v) const |
162 |
{ |
163 |
return Vector2D (x*v.x, y*v.y); |
164 |
} |
165 |
|
166 |
Vector2D |
167 |
Vector2D::operator * (double v) const |
168 |
{ |
169 |
return Vector2D (x*v, y*v); |
170 |
} |
171 |
|
172 |
Vector2D |
173 |
Vector2D::operator - (const Vector2D &v) const |
174 |
{ |
175 |
return Vector2D (x-v.x, y-v.y); |
176 |
} |
177 |
|
178 |
Vector2D |
179 |
Vector2D::operator / (double div) const |
180 |
{ |
181 |
return Vector2D (x/div, y/div); |
182 |
} |
183 |
|
184 |
double |
63 |
CalculateDistance (const Vector3D &a, const Vector3D &b) |
185 |
CalculateDistance (const Vector3D &a, const Vector3D &b) |
64 |
{ |
186 |
{ |
65 |
double dx = b.x - a.x; |
187 |
double dx = b.x - a.x; |
Lines 77-82
CalculateDistance (const Vector2D &a, const Vector2D &b)
|
Link Here
|
---|
|
77 |
return distance; |
199 |
return distance; |
78 |
} |
200 |
} |
79 |
|
201 |
|
|
|
202 |
|
203 |
double |
204 |
ScalarMultiplication (const Vector3D &a, const Vector3D &b) |
205 |
{ |
206 |
Vector3D tmp = a * b; |
207 |
return tmp.x + tmp.y + tmp.z; |
208 |
} |
209 |
|
210 |
double |
211 |
ScalarMultiplication (const Vector2D &a, const Vector2D &b) |
212 |
{ |
213 |
Vector2D tmp = a * b; |
214 |
return tmp.x + tmp.y; |
215 |
} |
216 |
|
80 |
std::ostream &operator << (std::ostream &os, const Vector3D &vector) |
217 |
std::ostream &operator << (std::ostream &os, const Vector3D &vector) |
81 |
{ |
218 |
{ |
82 |
os << vector.x << ":" << vector.y << ":" << vector.z; |
219 |
os << vector.x << ":" << vector.y << ":" << vector.z; |