-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvector.cpp
More file actions
79 lines (62 loc) · 1.78 KB
/
vector.cpp
File metadata and controls
79 lines (62 loc) · 1.78 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "vector.h"
#include <vector>
#include <algorithm>
#include <cmath>
// Vector implementation
Vector::Vector(double x, double y, double z) {
data[0] = x;
data[1] = y;
data[2] = z;
}
double Vector::norm2() const {
return data[0] * data[0] + data[1] * data[1] + data[2] * data[2];
}
double Vector::norm() const {
return sqrt(norm2());
}
void Vector::normalize() {
double n = norm();
data[0] /= n;
data[1] /= n;
data[2] /= n;
}
double Vector::operator[](int i) const {
return data[i];
}
double& Vector::operator[](int i) {
return data[i];
}
Vector Vector::operator-() const {
return Vector(-data[0], -data[1], -data[2]);
}
Vector& Vector::operator+=(const Vector& other) {
data[0] += other[0];
data[1] += other[1];
data[2] += other[2];
return *this;
}
// Vector operators
Vector operator+(const Vector& a, const Vector& b) {
return Vector(a[0] + b[0], a[1] + b[1], a[2] + b[2]);
}
Vector operator-(const Vector& a, const Vector& b) {
return Vector(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
}
Vector operator*(const double a, const Vector& b) {
return Vector(a*b[0], a*b[1], a*b[2]);
}
Vector operator*(const Vector& a, const double b) {
return Vector(a[0]*b, a[1]*b, a[2]*b);
}
Vector operator*(const Vector& a, const Vector& b) {
return Vector(a[0] * b[0], a[1] * b[1], a[2] * b[2]);
}
Vector operator/(const Vector& a, const double b) {
return Vector(a[0] / b, a[1] / b, a[2] / b);
}
double dot(const Vector& a, const Vector& b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
Vector cross(const Vector& a, const Vector& b) {
return Vector(a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]);
}