-
Notifications
You must be signed in to change notification settings - Fork 0
/
obstacle.h
53 lines (45 loc) · 1.15 KB
/
obstacle.h
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
#ifndef OBSTACLE_H
#define OBSTACLE_H
#include <QGraphicsRectItem>
#include <complex>
#include <QVector2D>
using namespace std;
struct WallProperties {
qreal relative_permittivity; // epsilon_r
qreal conductivity; // sigma
qreal epsilon; // permittivity = epsilon_0 * epsilon_r
complex<qreal> Z_m; // impedance
qreal alpha_m;
qreal beta_m;
complex<qreal> gamma_m; // gamma_m = alpha_m + j*beta_m
};
enum ObstacleType {
BrickWall,
Window,
MetalWall,
DryWall,
ConcreteWall
};
struct Wall {
ObstacleType material;
WallProperties properties;
};
class Obstacle: public Wall
{
public:
Obstacle(
QVector2D start,
QVector2D end,
ObstacleType material,
qreal thickness//,
//int id
);
QGraphicsLineItem* graphics = new QGraphicsLineItem(); // wall's QGraphicsItem
QLineF line; // wall's QLineF, for intersects()
QVector2D normal; // wall's normal vector ! normalized !
QVector2D unitary; // wall's unitary vector ! normalized !
int id=0; // only used for debugging
qreal thickness; // in meters
ObstacleType getMaterial();
};
#endif // OBSTACLE_H