-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathVec3.cpp
52 lines (41 loc) · 1.39 KB
/
Vec3.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "Vec3.h"
Vec3::Vec3 (double c1, double c2, double c3) : m_c1(c1), m_c2(c2), m_c3(c3) {}
Vec3::Vec3 (const Vec3& v) : m_c1(v.m_c1), m_c2(v.m_c2), m_c3(v.m_c3) {}
double Vec3::getC1 () const { return m_c1; }
double Vec3::getC2 () const { return m_c2; }
double Vec3::getC3 () const { return m_c3; }
void Vec3::setC1 (double c) { m_c1 = c; }
void Vec3::setC2 (double c) { m_c2 = c; }
void Vec3::setC3 (double c) { m_c3 = c; }
void Vec3::setAll (double c1, double c2, double c3) {
m_c1 = c1;
m_c2 = c2;
m_c3 = c3;
}
Vec3 Vec3::operator+ (const Vec3& v) const {
return Vec3(m_c1 + v.m_c1, m_c2 + v.m_c2, m_c3 + v.m_c3);
}
Vec3 Vec3::operator- (const Vec3& v) const {
return Vec3(m_c1 - v.m_c1, m_c2 - v.m_c2, m_c3 - v.m_c3);
}
Vec3 Vec3::operator/ (const double scalar) const {
if (scalar != 0)
return Vec3(m_c1 / scalar, m_c2 / scalar, m_c3 / scalar);
else
return Vec3(m_c1, m_c2, m_c3);
}
std::ostream& operator<< (std::ostream& os, const Vec3& v) {
os << " (" << v.m_c1 << ", " << v.m_c2 << ", " << v.m_c3 << ") ";
return os;
}
std::istream& operator>> (std::istream& is, Vec3& v) {
is >> v.m_c1 >> v.m_c2 >> v.m_c3;
return is;
}
Vec3 Vec3::produs_vectorial (const Vec3& v) {
Vec3 r;
r.setC1(m_c2 * v.m_c3 - m_c3 * v.m_c2);
r.setC2(- (m_c1 * v.m_c3 - m_c3 * v.m_c1));
r.setC3(m_c1 * v.m_c2 - m_c2 * v.m_c1);
return r;
}