first import
[mardrone] / mardrone / gaugehorizon.cpp
1 #include "gaugehorizon.h"
2 #include <QDebug>
3 #include <math.h>
4
5 GaugeHorizon::GaugeHorizon(QGraphicsItem *parent) :
6     Gauge(parent)
7 {
8 }
9
10
11
12 void GaugeHorizon::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,
13                        QWidget *widget)
14 {
15     drawHorizon(painter,-1.0*m_value,5*m_value2);
16 };
17 //////////////////////////////////////////////////////////////////////////
18 void GaugeHorizon::drawHorizon(QPainter *painter, float roll, float pitch)
19     {
20       QRect update_rect;
21       QPoint points[10];
22       //QPoint plane[10];
23       QVector<QLine> plane;
24       QVector<QLine>  fixo;
25       int tx, ctx, xd, i, j ;
26       int xo, yo, x1, x2, y1, y2;
27
28       xo=size().width()/2;
29       yo=size().height()/2;
30
31       plane+=QLine(xo-50,yo,xo-20,yo);
32       plane+=QLine(xo-20,yo,xo-10,yo+10);
33       plane+=QLine(xo-10,yo+10,xo,yo);
34       plane+=QLine(xo,yo,xo+10,yo+10);
35       plane+=QLine(xo+20,yo,xo+10,yo+10);
36       plane+=QLine(xo+50,yo,xo+20,yo);
37
38
39       static float sintable[]={sin(15*3.141592653/180.0),
40                                sin(30*3.141592653/180.0),
41                                sin(45*3.141592653/180.0),
42                                sin(60*3.141592653/180.0)};
43
44       static float costable[]={cos(15*3.141592653/180.0),
45                                cos(30*3.141592653/180.0),
46                                cos(45*3.141592653/180.0),
47                                cos(60*3.141592653/180.0)};
48
49       i = 0;
50       int arc0=130;
51       int arc1=150;
52       fixo+=QLine(xo,yo-arc0,xo,yo-arc1);
53       for (i = 0; i < 4; i++) {
54         fixo+=QLine(xo+arc0*costable[i],yo-arc0*sintable[i],xo+arc1*costable[i],yo-arc1*sintable[i]);
55         fixo+=QLine(xo-arc0*costable[i],yo-arc0*sintable[i],xo-arc1*costable[i],yo-arc1*sintable[i]);
56       };
57
58
59       tx = (int)(xo * tan(roll * 3.141592653/180.0));
60       xd = yo + pitch * 4;
61
62       QTransform savematrix= painter->transform ();
63      // painter->setClipRect(QRect(0,0, size().width(),size().height()/2));
64
65       painter->setTransform(QTransform().translate(xo+scenePos().x(), yo+scenePos().y()+pitch).rotate(roll));
66
67       QBrush whitebrush(Qt::green);
68       painter->setBrush(whitebrush);
69       QPen whitepen(Qt::green);
70       whitepen.setWidth(2);
71       painter->setPen(whitepen);
72       xo=0;yo=0;
73
74       painter->drawLine(50+xo,    0+yo,-50+xo,   0+yo);
75       painter->drawLine(40+xo,   50+yo,-40+xo,  50+yo);
76       painter->drawLine(40+xo,  100+yo,-40+xo, 100+yo);
77       painter->drawLine(40+xo,  -50+yo,-40+xo, -50+yo);
78       painter->drawLine(40+xo, -100+yo,-40+xo,-100+yo);
79
80       painter->drawText( 43+xo,-40+yo,"10");
81       painter->drawText(-63+xo,-40+yo,"10");
82       painter->drawText( 43+xo,-90+yo,"20");
83       painter->drawText(-63+xo,-90+yo,"20");
84       painter->drawText( 43+xo, 40+yo,"10");
85       painter->drawText(-63+xo, 40+yo,"10");
86       painter->drawText( 43+xo, 90+yo,"20");
87       painter->drawText(-63+xo, 90+yo,"20");
88
89
90       //  painter->rotate(0);
91       painter->setTransform(savematrix);
92       QPen bluepen(Qt::blue);
93       bluepen.setWidth(2);
94       painter->setPen(bluepen);
95       painter->drawLines(fixo);
96       painter->drawLines(plane);
97
98
99
100 }
101