-
Notifications
You must be signed in to change notification settings - Fork 0
/
HighestCornerAlgorithm.cpp
57 lines (54 loc) · 1.36 KB
/
HighestCornerAlgorithm.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
53
54
55
56
57
#include "HighestCornerAlgorithm.h"
#include <cmath>
void HighestCornerAlgo::update(double roll, double pitch)
{
if (roll > upperbound) {
if (pitch > upperbound) {
resetAll();
corners[2] = true;
}
else if (pitch < -upperbound) {
resetAll();
corners[1] = true;
}
else {
resetAll();
corners[1] = true;
corners[2] = true;
}
}
else if (roll < -upperbound) {
if (pitch > upperbound) {
resetAll();
corners[3] = true;
}
else if (pitch < -upperbound) {
resetAll();
corners[0] = true;
}
else {
resetAll();
corners[0] = true;
corners[3] = true;
}
}
else {
if (pitch > upperbound) {
resetAll();
corners[2] = true;
corners[3] = true;
}
else if (pitch < -upperbound) {
resetAll();
corners[0] = true;
corners[1] = true;
}
else {
// OK!!
}
}
if ((roll < 0 && roll > -lowerbound || roll > 0 && roll < lowerbound) &&
(pitch < 0 && pitch > -lowerbound || pitch > 0 && pitch < lowerbound)) {
resetAll();
}
}