draw yaw
This commit is contained in:
+83
-12
@@ -4,6 +4,8 @@
|
||||
#include "QThread"
|
||||
#include "QDebug"
|
||||
#include "QPicture"
|
||||
#include "QtMath"
|
||||
|
||||
|
||||
Cockpit::Cockpit(QWidget *parent): QWidget(parent)
|
||||
{
|
||||
@@ -141,6 +143,9 @@ void Cockpit::wheelEvent(QWheelEvent *e)
|
||||
|
||||
m_Target.yaw += 0.2f * e->angleDelta().y()/120.0f;
|
||||
|
||||
|
||||
m_Attitude.distofly += 0.2f * e->angleDelta().y()/120.0f;
|
||||
|
||||
qDebug() << "wheel event" << m_Attitude.roll << m_Attitude.pitch << m_Attitude.yaw << m_Target.airspeed;
|
||||
|
||||
update();
|
||||
@@ -256,7 +261,7 @@ void Cockpit::paintEvent(QPaintEvent *)
|
||||
painter.setRenderHint(QPainter::TextAntialiasing);
|
||||
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||
|
||||
painter.translate(width() / 2, height() / 2); /* 坐标变换为窗体中心 */
|
||||
painter.translate(width() / 2, 2* height() / 6); /* 坐标变换为窗体中心 */
|
||||
int side = qMin(width(), height()); /* 这一句决定了这个模块只能是方形 */
|
||||
painter.scale(side / 2000.0, side / 2000.0); /* 比例缩放 */
|
||||
painter.setPen(Qt::NoPen);
|
||||
@@ -1132,7 +1137,11 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
//平移坐标
|
||||
painter->translate(0,1000);
|
||||
|
||||
font.setWeight(QFont::ExtraLight);
|
||||
font.setFamily("Arial");//非衬线
|
||||
|
||||
painter->translate(0,1050);
|
||||
|
||||
painter->save();
|
||||
//画一个半透明的基础圆
|
||||
@@ -1142,10 +1151,8 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
painter->drawEllipse(-500,-500,1000,1000);
|
||||
painter->restore();
|
||||
|
||||
painter->save();
|
||||
//画一个顶部三角形
|
||||
//painter->setOpacity(1.0f);
|
||||
|
||||
painter->save();
|
||||
static const QPointF Tranpoints[3] = {
|
||||
QPointF(-30,-560),
|
||||
QPointF(0,-500),
|
||||
@@ -1157,29 +1164,54 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(m_CurrentColor);
|
||||
painter->drawPolygon(Tranpoints,3);
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
|
||||
//画顶部紫色目标值
|
||||
painter->save();
|
||||
//旋转
|
||||
painter->rotate(m_Target.yaw - m_Attitude.yaw);
|
||||
|
||||
static const QPointF Tarpoint[3] = {
|
||||
QPointF(-30,-560),
|
||||
QPointF(0,-500),
|
||||
QPointF(30,-560)
|
||||
static const QPointF Tarpoint[8] = {
|
||||
QPointF(-40,-500),
|
||||
QPointF(-40,-530),
|
||||
QPointF(-15,-530),
|
||||
QPointF( -5,-500),
|
||||
QPointF( 5,-500),
|
||||
QPointF( 15,-530),
|
||||
QPointF( 40,-530),
|
||||
QPointF( 40,-500)
|
||||
};
|
||||
|
||||
ePen.setWidth(8);
|
||||
ePen.setWidth(5);
|
||||
ePen.setColor(m_TargetColor);
|
||||
painter->setPen(ePen);
|
||||
painter->drawPolygon(Tarpoint,3);
|
||||
painter->drawPolygon(Tarpoint,8);
|
||||
|
||||
painter->drawLine(0,-100,0,-500);
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画一个中间小飞机
|
||||
painter->save();
|
||||
static const QPointF Planepoints[3] = {
|
||||
QPointF(-30,50),
|
||||
QPointF(0,-50),
|
||||
QPointF( 30,50)
|
||||
};
|
||||
|
||||
ePen.setWidth(8);
|
||||
ePen.setColor(m_CurrentColor);
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(m_CurrentColor);
|
||||
painter->drawPolygon(Planepoints,3);
|
||||
|
||||
painter->drawLine(0,-100,0,-500);
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画一个顶部黑色显示框
|
||||
painter->save();
|
||||
@@ -1270,7 +1302,46 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
//画中间小圆
|
||||
painter->save();
|
||||
|
||||
//一直跟目标垂直
|
||||
painter->rotate(m_Target.yaw);
|
||||
|
||||
ePen.setWidth(5);
|
||||
ePen.setColor(QColor("#FFFFFF"));
|
||||
painter->setPen(ePen);
|
||||
|
||||
for (int i = -5;i <= 5;i+=2) {
|
||||
painter->save();
|
||||
painter->translate(i*50,0);
|
||||
|
||||
painter->drawEllipse(-5,-5,10,10);
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
//画侧偏距
|
||||
painter->save();
|
||||
|
||||
//painter->translate(((m_Attitude.distofly >= 0)?(1):(-1))*log10(qAbs(m_Attitude.distofly)) * 10,0);
|
||||
painter->translate(m_Attitude.distofly,0);
|
||||
ePen.setWidth(5);
|
||||
ePen.setColor(QColor("#FFFFFF"));
|
||||
painter->setPen(ePen);
|
||||
painter->drawLine(0,-100,0,100);
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();//画YAW结束
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user