XML语言数据读写理解16
下面我们介入一个应用场景:也就是我们xml文件的应用:体渲染传输函数。
首先看一下效果:
这是从软件ExposureRender上截的图来显示的,左边的面板用来调节传输函数,右边来显示出效果。该程序的渲染是完全在GPU上实现的,我们因为重点在于制作和学习xml语言结构,所以就不使用GPU制作渲染引擎了,而是在VTK上显示。
现在我们首先来思考一下左边。左边其实是一个qt画板,可以在上面画一些东西,比如画线,画背景,画圆点等。这里的圆点对应了之前我们解析的文件里面的数值:Emission里面的RGBO,但首先我们最重要的任务是先把主要功能实现,再一点一点地思考怎么改善。
注意三个相邻圆点的关系:中间圆点不能滑动到超过左右两个圆点的地方,即:
这里一共有6个节点,最左和最右的两个节点不能水平移动,中间的节点,第2和第3个节点:第3个节点向左移动不能超过第二个节点,第四个节点向右移动不能超过第五个节点,同理第三和第四个节点也不能跨越到对方的另一边。这就是这四个节点是按顺序排列的。
所以,我们需要给节点安排一个最大值和最小值,即横轴的移动范围。第一个节点的横轴就固定在0了,最后一个节点的范围就固定在1了,中间的节点范围:第二个节点初始范围在第1个和第3个初始位置之间(禁止重合),第3个节点范围在第2个和第4个初始范围之间。当其中某个节点移动的时候,比如第4个节点移动了,那第3个节点和第5个节点的可移动范围也会改变。
由此,我们首先给每个节点定义一个最大最小值:注意一个细节,这个最大最小值是可达到的值,也就是说初始位置是0 , 0.11, 0.17,我们按照分辨率,假设屏幕上的最小分辨率(一个像素点)可让我们移动0.001,则第二个点的移动范围是0.111到0.169。
我们再NodeTS类里面定义如下两个值:
double minCoordinate;double maxCoordinate;
以及相应的四个函数:
void setMinCoordinate(double mincrd) {minCoordinate = mincrd;}void setMaxCoordinate(double maxcrd) {maxCoordinate = maxcrd;}double returnMinCoordinate() {return minCoordinate;}double returnMaxCoordinate() {return maxCoordinate;}
如果没有面板,则实现架构会比较抽象,现在我们先放下xml文件,先把面板的环境给布置好。下一节开始讲怎么在QT图形面板上画画。所以先暂时离开xml文件的理解部分。等讲完如何作图以后,我们再分别实现两种基于xml的图形图像显示,一个是二维的,一个是三维的。
XML语言数据读写理解16相关推荐
- XML语言数据读写理解2
首先我们需要了解一下对于计算机来说,XML语言到底是怎么构成的.一般来说,XML语言的第一行会是这种形式: <?xml version="1.0" encoding=&quo ...
- XML语言数据读写理解1
可扩展标记语言(XML)是一种非常简单的数据存储读写语言,与其他数据库语言相比,这是它最大的优点. 废话少说,接下来我们就写一下XML的语言格式:如何从0开始写一个XML数据文件,并用C++语言将里面 ...
- XML语言数据读写理解13
最后就是在tsfunGroup类里面定义函数: void writeXML(); 因为不再需要什么返回值了.源码如下: void TsfunGroup::writeXML() {writeFile.c ...
- XML语言数据读写理解3
首先先把我们要读取的xml文件搞上来: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Ap ...
- XML语言数据读写理解10
我们上一节讲完了读出Nodes和其他属性信息的程序,接下来我们把两个Item读到group里面. #pragma once #include <QObject> #include &quo ...
- XML语言数据读写理解11
有了前10节的基础,以及我在自己的博客里发布了那个简单的QT调试窗口类,一共两个,一个是有单例的,一个不是.大家想使用的话只需要加个头文件就可以调用了. 我们现在需要把存好的内容给显示出来,看看是不是 ...
- XML语言数据读写理解5
现在我们再讲一下应该怎么把数据写成XML文件. 还是以例子入手,假设我们已经有了前面章节例子的数据,这一节我们考虑怎么把这些数据按照xml文件格式写入到xml文件里面. 首先列一下我们需要写入的数据: ...
- XML语言与JSON
关于XML语言与JSON 1.什么是XML 2.XML的作用 3.什么是XML文件 XML语法 1.XML文档声明 2.标记(元素/标签/节点) 3.一个XM文档只能有一个最外层标记(根标记) 4.标 ...
- 关于iic协议和对AT24C02进行读写数据的理解和代码解读
关于iic协议和对AT24C02进行读写数据的理解和代码解读 认识IIC协议 IIC协议软件模拟方法 管脚初始化 时序 AT24C02 简介 存储大小计算 工作方式 流程(代码) 认识IIC协议 本文 ...
最新文章
- 时间管理大师!一程序员同时给谷歌和 Facebook 打工??
- pandas 中有关isin()函数的介绍,python中del解释
- Map集合HashMap,TreeMap
- 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式
- 工作分析文献综述_北大教授分析了124 篇不合格硕士学位论文,发现了6个典型问题!...
- Scala学习笔记04:内建控制结构
- android动态service,Android基础回顾之Service
- 小程序云开发实战一:小程序扫一扫获取到图书ISBN码(图书条形码)
- 程序员年薪40万被国企同学怒怼:没啥贡献,工资这么高,凭什么?
- 算术平均数及几何平均数
- java http 401_401 API请求状态错误
- 2021-01-09
- C++常函数的用法详解
- 1034: 夏季促销 C语言
- NMEA1803协议3.0版本及以上说明
- linux SSD 硬盘优化
- google搜索圣经
- 基于UWB的室内定位MiniFly无人机编队
- SAR信号处理重要工具-傅里叶变换
- 基于优先数系选择分压电阻