-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVector_Operations.h
More file actions
104 lines (94 loc) · 2.18 KB
/
Copy pathVector_Operations.h
File metadata and controls
104 lines (94 loc) · 2.18 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
* Vector_Operations.h
*
* Created on: Mar 20, 2020
* Author: Evan
*/
#ifndef VECTOR_OPERATIONS_H_
#define VECTOR_OPERATIONS_H_
#include <complex>
using namespace std;
double dot(double a1[3], double a2[3]){
double a10 = a1[0];
double a11 = a1[1];
double a12 = a1[2];
double a20 = a2[0];
double a21 = a2[1];
double a22 = a2[2];
double product = a10*a20 + a11*a21 + a12*a22;
return product;
}
double * cross(double a1[3], double a2[3]){
static double cross[3];
double a10 = a1[0];
double a11 = a1[1];
double a12 = a1[2];
double a20 = a2[0];
double a21 = a2[1];
double a22 = a2[2];
cross[0] = a11*a22 - (a21*a12);
cross[1] = a20*a12 - (a10*a22);
cross[2] = a10*a21 - (a20*a11);
return cross;
}
double * scale(double a1[3], double k){
static double scaled[3];
double a10 = a1[0];
double a11 = a1[1];
double a12 = a1[2];
scaled[0] = k * a10;
scaled[1] = k * a11;
scaled[2] = k * a12;
return scaled;
}
complex<double> * scale_comp(complex<double> a1[3], complex<double> k){
static complex<double> scaled[3];
complex<double> a10 = a1[0];
complex<double> a11 = a1[1];
complex<double> a12 = a1[2];
scaled[0] = k * a10;
scaled[1] = k * a11;
scaled[2] = k * a12;
return scaled;
}
double * add_vec(double a1[3], double a2[3], int k){
static double added[3];
double a10 = a1[0];
double a11 = a1[1];
double a12 = a1[2];
double a20 = a2[0];
double a21 = a2[1];
double a22 = a2[2];
double sign;
if (k == 1){
sign = -1;
}
else{
sign = 1;
}
added[0] = a10 + sign * a20;
added[1] = a11 + sign * a21;
added[2] = a12 + sign * a22;
return added;
}
complex<double> * add_vec_comp(complex<double> a1[3], complex<double> a2[3], int k){
static complex<double> added[3];
complex<double> a10 = a1[0];
complex<double> a11 = a1[1];
complex<double> a12 = a1[2];
complex<double> a20 = a2[0];
complex<double> a21 = a2[1];
complex<double> a22 = a2[2];
complex<double> sign;
if (k == 1){
sign = -1;
}
else{
sign = 1;
}
added[0] = a1[0] + sign * a2[0];
added[1] = a1[1] + sign * a2[1];
added[2] = a1[2] + sign * a2[2];
return added;
}
#endif /* VECTOR_OPERATIONS_H_ */