文章目录

  • 飞行仪表
  • 来源
  • 代码
  • 运行结果
  • 引用

飞行仪表

以下来自百度百科:
飞行仪表是测定和表示飞机数据的工具,飞机中必不可少的一部分,飞行员根据飞行仪表表示的数据才能正确地做出判断。
飞行员在飞行时,特别是无外界视觉参考的仪表飞行时,必须参考飞行仪表的数据,才能顺畅地飞行。
良好的飞行仪表设计可以使飞行员与飞机进行良好的人机交互,既减轻飞行员的负担又避免出错,切实提高人机工效。

来源

在GitHub上找到几个飞行仪表的项目,下载了一个基于Qml的项目,源代码看起来也很简单,不过对于我这样还没入门的来说,还是有很大的学习价值和参考意义的,原来可以这么简单。不过现在还没弄清楚一些仪表的工作原理,还有Qml中.svg文件是怎么制作出来的。与C++的交互还是要进一步消化,这里把交互部分先省去,以后再添加。
简单起见,这次仅搬来了基本的六个仪表(Basic Six),后续把所有的都搬过来吧。

代码

来看一下姿态表的代码,姿态改变的时候,有部分是要做变形处理的:

import QtQuick 2.0Item {width: 2 * radiusheight: 2 * radiusrequired property double radiusproperty double roll: 0property double pitch: 0readonly property double pixelPerDegree: 1.7property double deltaFaceX: 0property double deltaFaceY: 0onRollChanged: update()onPitchChanged: update()function update(){var tempPitch = pitchif(tempPitch < -20) tempPitch = -20if(tempPitch > 20) tempPitch = 20deltaFaceX = (face.width  / 240) * pixelPerDegree * tempPitch * Math.sin(Math.PI * roll / 180.0)deltaFaceY = (face.height / 240) * pixelPerDegree * tempPitch * Math.cos(Math.PI * roll / 180.0)}CustomImage {anchors.fill: parentsource: "../Resources/ai/ai_back.svg"rotation: -roll}CustomImage {id: faceanchors.fill: parentsource: "../Resources/ai/ai_face.svg"transform: [Rotation {origin.x: 0.5 * face.widthorigin.y: 0.5 * face.heightaxis {x: 0y: 0z: 1}angle: -roll},Translate {x: deltaFaceXy: deltaFaceY}]}CustomImage {anchors.fill: parentsource: "../Resources/ai/ai_ring.svg"rotation: -roll}CustomImage {anchors.fill: parentsource: "../Resources/ai/ai_case.svg"}
}

主Qml代码如下:

import "sixbasic"
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Layouts 1.0Window {minimumWidth: 800minimumHeight: 600title: "Basic Six"color: "#ffffff"visible: trueGridLayout{columns: 3anchors{fill:parentmargins: 16}Item {Layout.fillWidth: trueLayout.fillHeight: trueAirspeedIndicator {radius: 0.5 * Math.min(parent.width, parent.height)
//                airspeed: pfd.airspeed}}Item {Layout.fillWidth: trueLayout.fillHeight: trueAttitudeIndicator{radius: 0.5 * Math.min(parent.width,parent.height)
//                roll: pfd.roll
//                pitch: pfd.pitch}}Item {Layout.fillHeight: trueLayout.fillWidth: trueAltimeter{radius: 0.5 * Math.min(parent.width, parent.height)
//            altitude: pfd.altitude
//            pressure: pfd.pressure}}Item{Layout.fillWidth: trueLayout.fillHeight: trueTurnCoordinator {radius: 0.5 * Math.min(parent.width, parent.height)
//                turnRate: pfd.turnRate
//                slipSkid: pfd.slipSkid}}Item {Layout.fillWidth: trueLayout.fillHeight: trueHeadingIndicator {radius: 0.5 * Math.min(parent.width, parent.height)
//                heading: pfd.heading}}Item {Layout.fillWidth: trueLayout.fillHeight: trueVerticalSpeedIndicator {radius: 0.5 * Math.min(parent.width, parent.height)
//                climbRate: pfd.climbRate}}}
}

运行结果

数据均为初始化数据。

引用

感谢berkbavas及其他贡献者!!
berkbavas /QmlFlightInstruments

基于QML的飞行仪表相关推荐

  1. 飞机飞行仪表行业研究及十四五规划分析报告

    2021年全球飞机飞行仪表市场规模大约为 亿元(人民币),预计2028年将达到 亿元,2022-2028期间年复合增长率(CAGR)为 %.未来几年,本行业具有很大不确定性,本文的2022-2028年 ...

  2. 基于qml创建最简单的图像处理程序(1)-基于qml创建界面

    <基于qml创建最简单的图像处理程序>系列课程及配套代码 基于qml创建最简单的图像处理程序(1)-基于qml创建界面 http://www.cnblogs.com/jsxyhelu/p/ ...

  3. [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏

    前言  这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示    ...

  4. matlab飞行数据仿真,基于MATLAB的飞行仿真

    收稿日期: 2005 - 05 - 15 第 23卷 第 06期 计 算 机 仿 真 2006年 06月 文章编号: 1006 - 9348 (2006) 06 - 0057 - 05 基于 MATL ...

  5. Qt基于Qml图片翻转演示

    效果: qml源码 import QtQuick 2.12 import QtQuick.Controls 2.12ApplicationWindow {id: rootvisible: truewi ...

  6. Qt基于Qml超链接使用

    演示效果 1.鼠标区域相关属性 hoverEnabled: true;//鼠标在控件范围内 cursorShape: (containsMouse? Qt.PointingHandCursor: Qt ...

  7. Qt基于Qml实现分页控件

    演示效果 分页控件实现Qml PageNavigation.qml import QtQuick 2.12 import QtQuick.Controls 2.12Row{id: pageNaviga ...

  8. Qt基于Qml实现带滚动条的TextEdit

    演示效果 1.鼠标中键操作滚动条 //鼠标中键滚动信号 onWheel: {if (wheel.angleDelta.y > 0) {vbar.decrease();}else {vbar.in ...

  9. Qt基于Qml图像通过Shader倒影实现

    演示效果: 1. 引入图像库 import QtGraphicalEffects 1.15 2.在ShaderEffect特效是指定图像源 3.Shader源码 varying highp vec2 ...

最新文章

  1. 在列表显示某个内容,但数据表没有这个字段
  2. java 参数传递_java中方法的参数传递机制
  3. C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制
  4. 阿里云新推出 HiTSDB + IoT套件 物联网设备上云步入快车道
  5. SpringMvc渲染视图
  6. ZooKeeper程序员指南--使用ZooKeeper开发分布式应用程序
  7. 独立站现在好不好做?个人适合做跨境电商独立站吗?
  8. mongodb 下载地址,mongodb.dll 下载
  9. 学计算机的学后感,计算机学习心得体会(通用10篇)
  10. 非涉密计算机保密自查表,非涉密计算机检查记录表-保密处-20210711022211.pdf-原创力文档...
  11. 计算机视觉专业名词中英文对照(转)
  12. UOJ#449. 【集训队作业2018】喂鸽子(期望dp)
  13. Echarts 如何实现一张图现切换不同的X轴
  14. 千万融资资金为何青睐edge这家公司?
  15. 源中瑞区块链baas平台一站式服务体系
  16. VxWorks中tornado2.2中的编译器支持哪个C语言标准,有哪些标准库?
  17. 这款开源工具绝了!!!
  18. 《激荡三十年》——来了解我们的时代
  19. 微信小程序开发——switch组件
  20. 小学学校计算机里的单机游戏,15年前的农村小网吧,那个时候只能玩这些单机游戏...

热门文章

  1. 人的性欲为什么会被视为坏事?(转载)
  2. pandas使用dropna函数删除dataframe数据中指定数据列的内容为缺失值的数据行(使用subset参数指定数据列)
  3. 他是马斯克最崇拜的男人,11次婉拒诺奖,被称作神,却死于贫穷
  4. R语言分时滞后模型时间序列分析在空气污染与健康领域的应用(2)
  5. 天下苦广告久矣!分享五款免费且无广告的开源软件
  6. 计算机粘贴复制知识,电脑不能复制粘贴的三种解决办法
  7. 2022年危险化学品生产单位安全生产管理人员考试模拟100题及答案
  8. 微信小程序ar导航特点详解
  9. 【Python强化】使用pandas和csv读取csv文件
  10. 多元线性回归:R语言的有关基础操作