fd pitch ok

This commit is contained in:
hm
2020-02-11 17:52:05 +08:00
parent 614b38342c
commit c72eb1b6db
3 changed files with 76 additions and 89 deletions
+73 -82
View File
@@ -10,9 +10,6 @@
Cockpit::Cockpit(QWidget *parent): QWidget(parent)
{
// setMouseTracking(true);
//leftladder = new LeftLadder(this);
//GPS初始化
@@ -105,6 +102,7 @@ Cockpit::~Cockpit()
void Cockpit::UpdateTimeout(void)
{
//qDebug() << "time out";
update();
}
@@ -131,16 +129,16 @@ void Cockpit::wheelEvent(QWheelEvent *e)
//qDebug() << "wheel event" << e;
setRoll(m_Attitude.roll +0.1f * e->angleDelta().y()/120.0f);
setPitch(m_Attitude.pitch +0.1f * e->angleDelta().y()/120.0f);
setPitch(m_Attitude.pitch +0.2f * e->angleDelta().y()/120.0f);
setYaw(m_Attitude.yaw +0.1f * e->angleDelta().y()/120.0f);
setYaw(m_Attitude.yaw +0.3f * e->angleDelta().y()/120.0f);
setAirSpeed(m_Attitude.airspeed +0.1f * e->angleDelta().y()/120.0f);
setGPSAltitude(m_GPS.altitude + 0.1f * e->angleDelta().y()/120.0f);
setAirSpeed(m_Attitude.airspeed +0.4f * e->angleDelta().y()/120.0f);
setGPSAltitude(m_GPS.altitude + 0.5f * e->angleDelta().y()/120.0f);
m_Target.altitude += 0.1* e->angleDelta().y()/120.0f;;
m_Target.altitude += 0.6* e->angleDelta().y()/120.0f;;
m_Target.airspeed += 0.1f * e->angleDelta().y()/120.0f;;//0.1f * e->angleDelta().y()/120.0f;
m_Target.airspeed += 0.7f * e->angleDelta().y()/120.0f;;//0.1f * e->angleDelta().y()/120.0f;
m_Target.pitch += 0.1f * e->angleDelta().y()/120.0f;;
@@ -151,7 +149,7 @@ void Cockpit::wheelEvent(QWheelEvent *e)
m_Target.verticalspeed += 0.1f * e->angleDelta().y()/120.0f;
m_Attitude.verticalspeed += 0.1f * e->angleDelta().y()/120.0f;
m_Attitude.verticalspeed += 0.2f * e->angleDelta().y()/120.0f;
//qDebug() << "wheel event" << m_Attitude.roll << m_Attitude.pitch << m_Attitude.yaw << m_Target.airspeed;
@@ -289,37 +287,12 @@ void Cockpit::paintEvent(QPaintEvent *)
drawPitch(&painter);
drawRoll(&painter);
drawRollScale(&painter);
drawLeftScale(&painter);
drawRightScale(&painter);
drawVRate(&painter);
drawYawScale(&painter);
drawTopStatuts(&painter);
//drawCenterLine(&painter);
//drawText(&painter);
//drawGPS(&painter);
//drawHight(&painter);
//drawSpeed(&painter);
//drawBattery(&painter);
//drawLed(&painter);
//drawProtect(&painter);
//drawLowPanel(&painter);
}
@@ -451,8 +424,9 @@ void Cockpit::drawPitch(QPainter *painter)
pen.setColor(m_TargetColor);
painter->setPen(pen);
//painter->setBrush(m_TargetColor);
painter->drawPolygon(PitchPoints_L,4);
painter->drawPolygon(PitchPoints_R,4);
//painter->drawPolygon(PitchPoints_L,4);
//painter->drawPolygon(PitchPoints_R,4);
painter->drawLine(-200,0,200,0);
painter->restore();
//画黑色背景
@@ -1364,9 +1338,6 @@ void Cockpit::drawVRate(QPainter *painter)
}
//画航向(位于底部的一个圈)
void Cockpit::drawYawScale(QPainter *painter)
{
@@ -1423,12 +1394,12 @@ void Cockpit::drawYawScale(QPainter *painter)
QPointF( 40,-500)
};
ePen.setWidth(5);
ePen.setWidth(8);
ePen.setColor(m_TargetColor);
painter->setPen(ePen);
painter->drawPolygon(Tarpoint,8);
painter->drawLine(0,-100,0,-450);
//painter->drawLine(0,-100,0,-450);
painter->restore();
@@ -1465,9 +1436,67 @@ void Cockpit::drawYawScale(QPainter *painter)
painter->setBrush(m_CurrentColor);
painter->drawPolygon(Planepoints,18);
//painter->drawLine(0,-100,0,-500);
//画横竖白色小圈圈
//画中间小圆
painter->save();
painter->restore();
//一直跟目标垂直
//painter->rotate(m_Target.yaw);
ePen.setWidth(5);
ePen.setColor(QColor("#FFFFFF"));
painter->setPen(ePen);
for (int i = -3;i <= 3;i++) {
painter->save();
painter->translate(i*100,0);
painter->drawEllipse(-5,-5,10,10);
painter->restore();
painter->save();
painter->translate(0,i*100);
painter->drawEllipse(-5,-5,10,10);
painter->restore();
}
//画竖条
painter->save();
if(abs(m_Attitude.distofly) >= 10)//大于10,对数显示
{
painter->translate(((m_Attitude.distofly >= 0)?(1.0f):(-1.0f))*log10(abs(m_Attitude.distofly)) * 100,0);
}
else
{
painter->translate(m_Attitude.distofly * 10.0f,0);//小于10,线性 显示
}
ePen.setWidth(8);
ePen.setColor(m_TargetColor);
painter->setPen(ePen);
painter->drawLine(0,-200,0,200);
painter->restore();//画竖条结束
painter->save();//画横条开始
if(abs(m_Attitude.distofly) >= 10)//大于10,对数显示
{
painter->translate(0,((m_Attitude.distofly >= 0)?(1.0f):(-1.0f))*log10(abs(m_Attitude.distofly)) * 100);
}
else
{
painter->translate(0,m_Attitude.distofly * 10.0f);//小于10,线性 显示
}
ePen.setWidth(8);
ePen.setColor(m_TargetColor);
painter->setPen(ePen);
painter->drawLine(-200,0,200,0);
painter->restore();//画横条结束
painter->restore();//画小圆结束
painter->restore();//画小飞机结束
//画一个顶部黑色显示框
@@ -1563,45 +1592,7 @@ void Cockpit::drawYawScale(QPainter *painter)
}
//画中间小圆
painter->save();
//一直跟目标垂直
painter->rotate(m_Target.yaw);
ePen.setWidth(5);
ePen.setColor(QColor("#FFFFFF"));
painter->setPen(ePen);
for (int i = -3;i <= 3;i++) {
painter->save();
painter->translate(i*100,0);
painter->drawEllipse(-5,-5,10,10);
painter->restore();
}
//画侧偏距
painter->save();
if(abs(m_Attitude.distofly) >= 10)//大于10,对数显示
{
painter->translate(((m_Attitude.distofly >= 0)?(1.0f):(-1.0f))*log10(abs(m_Attitude.distofly)) * 100,0);
}
else
{
painter->translate(m_Attitude.distofly * 10.0f,0);//小于10,线性 显示
}
ePen.setWidth(8);
ePen.setColor(m_TargetColor);
painter->setPen(ePen);
painter->drawLine(0,-100,0,100);
painter->restore();//画侧偏结束
painter->restore();//画小圆结束