当前位置: 首页 > news >正文

QML 3D曲面图(Surface3D)技术

3D曲面图是科学计算和工程可视化中常用的图表类型,它通过起伏的曲面展示二维数据的变化趋势。Qt Data Visualization 模块中的 Surface3D 类型提供了强大的曲面可视化能力。

Surface3D 核心属性与方法

表:Surface3D主要属性与方法

属性/方法类型描述示例
widthreal曲面图宽度width: parent.width
heightreal曲面图高度height: parent.height
selectionModeenum选择模式(无/单项/行/列/行与列/切片)AbstractGraph3D.SelectionItem
shadowQualityenum阴影质量(无/低/中/高/软低/软中/软高)AbstractGraph3D.ShadowQualityHigh
scene.activeCameraQ3DCamera控制场景相机scene.activeCamera.xRotation: 60.0
themeTheme3D设置图表主题theme: Theme3D { type: Theme3D.ThemeArmyBlue }
axisXValue3DAxisX轴配置axisX: Value3DAxis { title: "经度"; min: -180; max: 180 }
axisYValue3DAxisY轴配置axisY: Value3DAxis { title: "高度"; min: 0; max: 10000 }
axisZValue3DAxisZ轴配置axisZ: Value3DAxis { title: "纬度"; min: -90; max: 90 }
flipHorizontalGridbool是否翻转水平网格flipHorizontalGrid: true
surfaceSerieslist曲面系列列表surfaceSeries: [heightMapSeries, temperatureSeries]
addSeries()method添加曲面系列surface3D.addSeries(newSeries)
removeSeries()method移除曲面系列surface3D.removeSeries(oldSeries)
release()method释放资源Component.onDestruction: surface3D.release()

基本曲面图实现

以下是一个完整的地形高度图示例,展示了如何使用Surface3D显示地理高程数据:

import QtQuick
import QtQuick.Controls
import QtDataVisualizationWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Surface3D {id: surfaceGraphanchors.fill: parenttheme: Theme3D { type: Theme3D.ThemeArmyBlue }// 设置坐标轴axisX: ValueAxis3D {title: "东西方向 (km)"}axisY: ValueAxis3D {title: "高度 (m)"min: 30max: 200}axisZ: ValueAxis3D {title: "南北方向 (km)"}// 添加曲面系列Surface3DSeries {id: terrainSeriesitemLabelFormat: "(@xLabel km, @zLabel km): @yLabel m"drawMode: Surface3DSeries.DrawSurfaceAndWireframeflatShadingEnabled: false// 使用高度图数据代理HeightMapSurfaceDataProxy {id: heightMapProxyheightMapFile: ":/layer_1.png"}// 自定义渐变颜色baseGradient: ColorGradient {ColorGradientStop { position: 0.0; color: "#0000ff" }  // 深水区ColorGradientStop { position: 0.2; color: "#00ffff" }  // 浅水区ColorGradientStop { position: 0.25; color: "#00aa00" } // 海滩ColorGradientStop { position: 0.5; color: "#ffff00" }  // 平原ColorGradientStop { position: 0.75; color: "#aa5500" } // 山地ColorGradientStop { position: 1.0; color: "#ffffff" } // 雪山}// 网格线样式wireframeColor: "#555555"}// 相机初始位置scene.activeCamera.xRotation: 20.0scene.activeCamera.yRotation: 45.0}// 控制面板Row {anchors.top: parent.topanchors.right: parent.rightspacing: 10padding: 10Button {text: "俯视图"onClicked: {surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetFrontHigh}}Button {text: "侧视图"onClicked: {surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetRightLow}}Button {text: "等轴测"onClicked: {surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricRight}}ComboBox {id: drawModeCombomodel: ["Surface", "Wireframe", "Both"]onCurrentIndexChanged: {switch(currentIndex) {case 0: terrainSeries.drawMode = Surface3DSeries.DrawSurface; break;case 1: terrainSeries.drawMode = Surface3DSeries.DrawWireframe; break;case 2: terrainSeries.drawMode = Surface3DSeries.DrawSurfaceAndWireframe; break;}}}}
}

 

http://www.xdnf.cn/news/1209061.html

相关文章:

  • K-近邻算法(KNN算法)的K值的选取--交叉验证+网格搜索
  • 【C++算法】72.队列+宽搜_二叉树的最大宽度
  • adb reboot 与 adb shell svc power reboot 的区别
  • 【C++】1. C++基础知识
  • 【HTML】浅谈 script 标签的 defer 和 async
  • 企业高性能web服务器
  • EnergyMath芯详科技 EMS4100/MES4000/MES3900
  • 如何保证DoIP的网络安全?
  • 基于 xlsx-js-style 的 Excel 导出工具实现导出excel
  • 40+个常用的Linux指令——下
  • haproxy应用详解
  • 从github同步新项目的两次挫折-2025.7.29
  • 【WRF工具】服务器中安装编译GrADS
  • 信创国产Linux操作系统汇总:从桌面到服务器,百花齐放
  • 【Golang】Go语言Map数据类型
  • 随缘玩 一: 代理模式
  • 计算器4.0:新增页签功能梳理页面,通过IO流实现在用户本地存储数据
  • MySQL数据库 mysql常用命令
  • 再谈亚马逊云科技(AWS)上海AI研究院7月22日关闭事件
  • 实现视频实时马赛克
  • P1098 [NOIP 2007 提高组] 字符串的展开
  • python案例:基于python 神经网络cnn和LDA主题分析的旅游景点满意度分析
  • 小程序中事件对象的属性与方法
  • 微算法科技(NASDAQ:MLGO)应用区块链联邦学习(BlockFL)架构,实现数据的安全传输
  • Django自带的加密算法
  • 3D游戏引擎的“眼睛“:相机系统深度揭秘与技术实现
  • 14、distance_object_model_3d算子
  • 如何用命令行快速提取PPT中的所有图片?
  • 线程崩溃是否导致进程崩溃
  • 【嵌入式电机控制#18】有刷直流串级控制