-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnalyzer.cpp
More file actions
56 lines (49 loc) · 2.68 KB
/
Copy pathAnalyzer.cpp
File metadata and controls
56 lines (49 loc) · 2.68 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
#include "Analyzer.h"
Analyzer::Analyzer(const Visor& visor1, const Visor& visor2)
{
InitializeAttributes(visor1, visor2);
}
void Analyzer::InitializeAttributes(const Visor& visor1, const Visor& visor2)
{
CalculateK1(visor1, visor2);
CalculateK2(visor1, visor2);
CalculateK3(visor1, visor2);
CalculateK4(visor1, visor2);
}
void Analyzer::CalculateK1(const Visor& visor1, const Visor& visor2)
{
double tanA = qTan(visor1.GetAngle() + visor1.GetPositiveErrorRay().GetAngleSign() * visor1.GetMaxAngleErorr()); // pos
double tanB = qTan(visor2.GetAngle() + visor1.GetPositiveErrorRay().GetAngleSign() * visor2.GetMaxAngleErorr()); // pos
m_k1.first = (tanA * visor1.GetPosition() + tanA * INITIAL_POSITION - tanB * visor2.GetPosition() - tanB * INITIAL_POSITION)
/ (tanA - tanB);
m_k1.second = tanA * (m_k1.first - visor1.GetPosition());
}
void Analyzer::CalculateK2(const Visor& visor1, const Visor& visor2)
{
double tanA = qTan(visor1.GetAngle() + visor1.GetPositiveErrorRay().GetAngleSign() * visor1.GetMaxAngleErorr()); // pos
double tanB = qTan(visor2.GetAngle() + visor1.GetNegativeErrorRay().GetAngleSign() * visor2.GetMaxAngleErorr()); // neg
m_k2.first = (tanA * visor1.GetPosition() + tanA * INITIAL_POSITION - tanB * visor2.GetPosition() - tanB * INITIAL_POSITION)
/ (tanA - tanB);
m_k2.second = tanA * (m_k2.first - visor1.GetPosition());
}
void Analyzer::CalculateK3(const Visor& visor1, const Visor& visor2)
{
double tanA = qTan(visor1.GetAngle() + visor1.GetNegativeErrorRay().GetAngleSign() * visor1.GetMaxAngleErorr()); // neg
double tanB = qTan(visor2.GetAngle() + visor1.GetNegativeErrorRay().GetAngleSign() * visor2.GetMaxAngleErorr()); // neg
m_k3.first = (tanA * visor1.GetPosition() + tanA * INITIAL_POSITION - tanB * visor2.GetPosition() - tanB * INITIAL_POSITION)
/ (tanA - tanB);
m_k3.second = tanA * (m_k3.first - visor1.GetPosition());
}
void Analyzer::CalculateK4(const Visor& visor1, const Visor& visor2)
{
double tanA = qTan(visor1.GetAngle() + visor1.GetNegativeErrorRay().GetAngleSign() * visor1.GetMaxAngleErorr()); // neg
double tanB = qTan(visor2.GetAngle() + visor1.GetPositiveErrorRay().GetAngleSign() * visor2.GetMaxAngleErorr()); // pos
m_k4.first = (tanA * visor1.GetPosition() + tanA * INITIAL_POSITION - tanB * visor2.GetPosition() - tanB * INITIAL_POSITION)
/ (tanA - tanB);
m_k4.second = tanA * (m_k4.first - visor1.GetPosition());
}
void Analyzer::CalculateDiagonals()
{
m_diagonal1 = qSqrt(pow(m_k3.first - m_k1.first, 2) + pow(m_k3.second - m_k1.second, 2));
m_diagonal2 = qSqrt(pow(m_k2.first - m_k4.first, 2) + pow(m_k2.second - m_k4.second, 2));
}