自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dezeming的博客

那年花开

  • 博客(40)
  • 资源 (11)
  • 收藏
  • 关注

原创 Qt多线程2

我们可以认为,DebugText对象是一个临界资源,即一次只能有一个线程来使用。临界区资源必须要互斥访问,不然就会出现各种Bug。使用QMutex类的相关功能可以保证一次只有一个线程使用该代码段。我们在DebugText类里面加入下面这句声明:QMutex *mutexInDebugText;然后再构造函数中:mutexInDebugText = new QMutex;...

2019-11-27 20:07:54 6053

原创 Qt多线程1

Qt的多线程对于设计并行程序来说很有帮助,但是多线程因为其固有的一些特性,会导致程序会出现各种隐患,尤其是类设计不好的时候尤为严重。这里我们将详细介绍一下Qt的多线程技术,包括如何制作一个线程安全的类。首先我们先写一个简单的例子:首先,我们再次使用一个类DebugText ,该类继承自DebugWidget类:#pragma once#ifndef _DEBUGWIDGE...

2019-11-27 17:51:14 6133 1

原创 VTK交互系统 4 自定义交互器样式2 键盘鼠标交互器设置

现在我们修改一下其中一个事件函数:void my3DCameraStyle::OnLeftButtonDown(void){ vtkInteractorStyleUser::OnLeftButtonDown(); GetLastPos(m_OldPos[0], m_OldPos[1]); cout << "m_OldPos = " << m_OldPos[0]...

2019-11-23 22:19:50 8865 17

原创 VTK交互系统 3 自定义交互器样式

我觉得还是从头到尾教大家写一个交互器样式比较好,而不是直接列上一大堆程序。可能一节到两节就能写完了,因为内容也不复杂。首先我们把之前写好的数组显示vtk程序放上,我们在它的基础上添加自己想要等功能。#include<vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2)VTK_MODULE_INIT(vtkInteract...

2019-11-23 16:27:00 8418 2

原创 VTK交互系统 2 交互器样式

所谓交互器样式,就是你设置了交互器,然后它里面会有各种默认的或者你自己定义的交互方式,比如你可以设置滚轮来将图片放大或者缩小。或者你可以设置鼠标点击移动来改变摄像机的视角,从而看到物体的不同面。VTK程序需要首先捕获你的事件,然后根据你触发的事件,结合交互器的样式,来执行相应的函数。之前在学习的时候我看了很多例子,模仿着写了很多自定义的样式,但是对里面的机制有些难以理解。后来我看了《VTK...

2019-11-22 22:41:06 7288

原创 VTK显示像素图

VTK用来显示一些内定的数据结构,立体图像和图片很容易,但是很多人都找不到怎么显示出一张像素图。有人问我相关的技术,我整理了整理,弄成了一篇博客。先把所需的头文件包含一下:#include<vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2)VTK_MODULE_INIT(vtkInteractionStyle);VTK_...

2019-11-22 00:07:52 6411

原创 VTK交互系统 1 交互模式入门

在VTK中,交互一般使用 命令/观察者模式来进行交互,即观察者等待命令,一旦有命令触发,就去执行该交互函数。有两种实现模式:1. 设置回调函数 2. 继承command类,然后实现内部函数我们先看第一种方式。我们看代码,首先定义一个回调函数,注意回调函数的函数签名,除了函数名以外其他部分例如返回值,参数列表都必须一样。void MyCallbackFunc(vtkObje...

2019-11-21 16:59:28 7695

原创 VTK的Mapper

类vtkMapper及其派生类,把输入的数据转换成几何图元(例如转换成点,转换成线,转换成面等)进行渲染。该类存储需要进行渲染的数据,和一些渲染信息。我们经常能在vtk程序中看到vtkImageActor(派生自vtkActor)使用vtkActor::SetMapper()函数。该函数设置生成几何图元的Mapper,也就是说把负责图像显示和渲染的渲染引擎vtkActor连接到生成用于渲染的几...

2019-11-11 21:07:34 8376

原创 altium designer 制作元器件封装库

建立元件集成库方法以及步骤(以altiumdesigner14为例):首先打开altiumdesigner 软件,打开File菜单,选择里面的NEW——>project——>integrated project,之后保存workspace,左击wrokspace面板上的workspace——>save design workspace , 然后保存在一个文件夹里。然后再保...

2019-11-10 19:17:15 10904

原创 RTC闹钟的中断处理方法以及程序设计

rtc时钟系统里还有闹钟发生器,通过程序员自己设置,每隔一段时间就产生中断程序一次。本章使用的寄存器地址在上一章已经说明过(基地址加偏移量)RTC时钟的闹钟需要借助中断的方法来完成,中断的使用方面以及相应的函数设置我们在以前的文章中已经详细地说过,这里不再赘述。//alarm使能函数,使能alarmvoid rtc_set_alarm(void){(*((volatile unsign...

2019-11-10 19:16:44 11699

原创 ARM的PWM定时器1

PWM定时器是最常用的定时器,包括51单片机里面的简单定时器也是PWM定时器。PWM定时器主要作用是产生PWM波形,原理就是一个定时器(计数器)。以三星公司的S5PV210为例,现在阐述一下ARM的PWM定时器。这个CPU有五个PWM定时器,0,1,2,3各自对应一个外部GPIO,输出PWM信号,timer4没有对应的GPIO,这个主要用来作为产生内部中断来使用。它们的时钟来源是PCLK_...

2019-11-10 19:16:18 6229

原创 C语言 之建立静态链接库

下面说一下建立静态链接库的方法各个C语言编程软件都有它的方法,比如建立一个工程来共享文件,这就比较容易和简单了,现在我们选择使用难一点的linux系统,探究在linux系统下的建立静态链接库的方法。首先,在linux系统我们在一个文件夹目录里面来建立一个 .h 头文件和一个 .c 文件,(比如我建立tiaoshen.c 和 mmc.h)然后打开它们。在 .c 头文件里面我们写上自己创作...

2019-11-10 19:14:52 5414

原创 C语言 之递归函数

今天来总结一下关于递归函数的使用方面的问题。 递归函数就是在函数使用的时候自己调用自己,层层调用,来实现你想要的功能。 有两个最常用的例子,我们来写一下。 (1)计算阶乘#include <stdio.h>int factorial(int n); // 函数声明(阶乘)int main(void){int a = 5;printf("%...

2019-11-10 19:14:44 6217

原创 ARM cortex a 的SDRAM (DDR)

下面介绍一下SDRAM的初始化工作。 SDRAM是同步动态随机存储器,需要初始化才能正常使用,但是可惜它的初始化太麻烦,里面涉及的东西也是非常之多,那么下面我们概括地分析一下它到底需要哪些初始化步骤: 以三星公司的S5PV210系列芯片为例子,它使用了4个256M的DDR2内存芯片,都是16位的,并联以后可以当做2个32位内存芯片来访问使用。这个1Gb(1G bit)的DDR内部被配置...

2019-11-10 19:14:24 5919

原创 C语言之 认识可变参数

printf()的原型是int printf(const char *fmt, ...);后面三个 . 表示C语言的变参。 那么什么是变参?它有什么功能和作用呢? 变参就是参数不确定,可以随意根据需要来改变的参数。 我们先举一个固定参数列表的函数:int swap(int a,int b){ int c; c=a; a=b; b=c;...

2019-11-10 19:13:46 4666

原创 关于ARM Cortex a 系列的看门狗定时器

关于ARM cortex a系列的看门狗定时器,现在以三星公司的S5PV210为例子,来讨论学习一下看门狗定时器的相关知识。刚开始学习使用英文技术手册,很多都不太习惯,不过还是坚持吧。 看门狗定时器会在由于噪声或者系统错误造成的问题中恢复机器正常操作,它可以产生复位信号。当定时器计数达到0的时候,如果一直没有程序给它重新填装数(没有喂狗),它就会产生复位信号并复位。看门狗定时器支持等...

2019-11-10 19:13:07 5399

原创 cmp bne 以及sub指令的详解

之前看到过一个延时函数段:delay: ldr r2, =7000000 ldr r3, =0x0 delay_loop: sub r2, r2, #1 //r2=r2-1 cmp r2, r3 //cmp会影响z标志位,如果r2=r3,则Z=1;下一句中eq就会成立 b...

2019-11-10 19:13:00 8073

原创 icache的方面以及使用

这次学习一下高速缓存icache的功能的开关。首先巩固一下这个mrc指令MRC 指令的格式为:MRC{<cond>}(条件)协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2。如 mrc p15 , 0 , r0 , c1 , c0 , 0 ; <cond>为指令执行的条件码,忽略则视为无条件执行,该指令的作用是将...

2019-11-10 19:12:08 1141

原创 QT三维图形4

我们先把基本的功能写上:#include <QGroupBox>#include "qDoubleSlider.hpp"#include <qlabel.h>#include <qgridlayout.h>class My3DCentralPoint : public QGroupBox { Q_OBJECTpublic: My3DCent...

2019-11-10 17:48:20 7343

原创 QT三维图形3

我们现在要设计一个滑动条,可以通过滑动来实现立方体位置和边框长度的改变。因为立方体的长宽都是小数,普通的进度条难以实现,这里我们封装一个double类型的进度条:class QDoubleSlider : public QSlider然后在里面定义函数: void setRange(double Min, double Max); void setMinimum(double...

2019-11-10 17:01:36 8123

原创 QT三维图形2

我们再定义一下鼠标事件。首先定义两个全局变量,以及判断鼠标是否按压下去的量:int lastPosX, lastPosY;int currentPosX, currentPosY;int pressFlag = 0;void My3DDisplayWidget::mousePressEvent(QMouseEvent *event) { QPoint qf = event-&...

2019-11-10 12:28:55 6495

原创 QT三维图形1

先说一下我们想要做什么,以及这个小的系列会讲些什么。首先这个系列很小,我觉得大概也就几节罢了,不可能给大家把三维Opengl讲透,所以读者应该是有点基础的。在做体渲染的时候,我们有时候只需要渲染里面的一部分内容,也就是说我们不需要把整个体空间都渲染出来,这个时候,我们就应该建立一个窗口,里面有一个可以移动的矩形体来调节我们想要渲染的内容,注意要是矩形的。在我们已有的工程上,建立一个Do...

2019-11-10 12:19:07 7290 2

原创 QT传输函数控件设计13 大结局

虽然感觉像是过了很久,其实时间也没有几天。我是从10月27号开始写这个系列的。从27号到11月8号,总共也就才十三天而已。本来我觉得这个比较复杂的控件要想实现可能得一个月,从解析XML文件,到图元的设计,再到实现具体细节,因为本人主业还是做算法的,很少会直接使用Qt界面编程,所以对我来说该项目也算是一个挑战。该控件的实现,到目前大概3千行代码,里面还有很多功能尚待发掘,目前我们就只先实现这一个简单...

2019-11-08 19:28:39 6146

原创 QT传输函数控件设计12 自定义信号和槽

现在我们这么思考一下:我们已经在每个NodeGraphicsItem里面定义了一个指针,指向了每个原始数据的NodeXmlItem,我们可以在itemChange函数中坐标修改的时候对其进行修改,但是问题来了,我们修改了值,但是只有当更新update的时候才会重新显示位置。我们在鼠标松开事件中使用了update,但是如果鼠标不松开,我们只是单纯地移动小圆点,能不能把实时移动的信息发给上层呢?...

2019-11-08 19:05:32 6514 1

原创 QT传输函数控件设计11 包含小圆点的图形项2

然后我们写一下void TsfunGraphicsItem::itemsUpdate()函数,其实首先我们应该清空NodeGraItem列表:for(int i = 0;i < NdGraItemlist.count();i++){ scene()->removeItem(NdGraItemlist[i]); delete NdGraItemlist[i]; } N...

2019-11-08 18:10:34 6145 1

原创 QT传输函数控件设计10 包含小圆点的图形项

在NodeGraphicsItem小圆点类里面加入新的成员: double lastPos; double currentPos; double nextPos; double opacity; void setMargin(int x,int y,int w,int h); int xStart; int yStart; i...

2019-11-08 17:50:20 6239

原创 QT传输函数控件设计9 初步设计视口类

我们先按照之前的布局设计中,先把 TsfunDockWidget 以及 TsfunWidget 对象设计完。注意 DockWidget 里的中心窗体设置。然后定义继承自QWidget的类TsfunWidget类以及继承自QGraphicsView类的TsfunView类,并把这个类实例化加到TsfunWidget类里面,为了玩玩布局我们也可以在TsfunWidget的布局里再加个按键(没啥用,就是...

2019-11-08 15:38:28 6134

原创 QT传输函数控件设计8 设计小圆点

首先看一下小圆点:如图,左图上有很多小圆点,这些小圆点是由蓝色的中心和红边构成。点击小圆点的时候,小圆点的红边会消失,松开鼠标红边又会出现。我们首先要把这些小圆点能够显示在QGraphicsView上面,还记得之前讲过的图形项嘛?每个小圆点就是一个图形项。现在我们就开始设计图形项类。因为这是圆的,所以我们就继承一个QGraphicsEllipse椭圆类。#ifndef __Nod...

2019-11-08 00:13:08 6648

原创 QT传输函数控件设计7 边界和布局规划

我们先定义一个关于边界的类。因为我们在设计的时候,需要明确很多因素:1.我们假设把整个针对传输函数来设计的控件都放在一个QDockWidget上,那么首先我们先构思一个DockWidget这些设计以后真正设计的时候还会讲,这里提到只是为了方便说明布局。2.在DockWidget上,我们需要定义很多控件,这些控件中的一个是之前我们看到的一个大的内部窗体结构,以及其他内部窗体结构...

2019-11-07 23:40:02 6164 1

原创 QT传输函数控件设计6 设计Dock窗体结构

我们新建一个QT类,叫MyTransferFuncDockWidget,继承自QDockWidget。然后在继承mainWindow的类中声明MyTransferFuncDockWidget *mytfDockWidget;然后在其构造函数中new一个实体。因为我们有许多功能,多个功能作为一个功能集体,我们把相同功能的控件都定义在一个GroupBox里面,首先我们先定义一个关于节...

2019-11-06 10:23:30 6172

原创 QT传输函数控件设计5 显示体渲染效果

初期为了简单,我们就直接在open()函数下面直接继续写。为了保证没有读到文件就不处理下面的显示,我们就在上面定义一个flag,只有在文件数量>20的时候,flag = 1; 然后接着写: if (flag == 1) { }我们接下来的功能都是在这里面实现的。注意先包含一堆头文件:#include <vtkImageData.h>#include ...

2019-11-03 15:48:31 6377

原创 QT传输函数控件设计4 接着进行融合

既上节之后,我们要定义一个打开文件的菜单,用于打开我们想用来可视化的文件:在头文件类中声明:pravite: QAction *action; QToolBar *mainToolBar; QStatusBar *statusBar; QMenuBar *menuBar; QMenu *menu; void setup();然后写实体:(注意这里面有些东西是从以前...

2019-11-03 12:29:32 6124

原创 QT传输函数控件设计3 QVTKWidget和QT图形界面的融合

当然我们的项目不可能真的是零基础的,如果你连什么是QDockWidget,连怎么写个信号和槽都不清楚,那就去学QT吧,反正又不难,期待我们再会。之前是因为xml和图形项场景之类的我觉得可能大家接触比较少,而且网上的资料特别是xml文件解析的资料不太全面,所以我才单独花了一周多的时间写了二十多节来讲解的,这里关于QWidget的常见的各种控件的用法不再做单独解释(反正很简单,有点经验一看就知道啥...

2019-11-03 11:46:34 7232

原创 QT传输函数控件设计2 体渲染和VTK

程序我就先直接放这里:#include<vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2)VTK_MODULE_INIT(vtkInteractionStyle);VTK_MODULE_INIT(vtkRenderingFreeType);VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)...

2019-11-02 21:33:18 6456 1

原创 QT传输函数控件设计1 引子

这又是一个系列的开头。说实话本来我想先写写关于QT三维物体显示的功能的,因为后面也会遇到。但是鉴于有些朋友表示急需使用关于渲染的传输函数控件,这里我就先把这个传输函数控件搞定,然后再来写一下怎么实现小三维模型显示和交互。老规矩:各位务必放心,本人开坑必填,预计一周内填完此坑。各位注意了,我之前写的关于xml文件读写,以及QT图形图像显示的系列内容都是为这个来做铺垫。以前讲过的这两个系列...

2019-11-02 20:05:17 6189 1

原创 QT图形显示和处理8

本节代码多处为了方便简洁,应该是用了些《QT creater 快速入门第三版 霍亚飞著》的一些代码,在此感谢。毕竟本人时间也是有限,没有必要为了“全都是自己写的”而故意把代码修改到六亲不认的程度。(尽管有些项目的代码已经改到六亲不认的地步了)。以前自己玩QT4的时候也是学了这本书,之后自己做的项目里很多代码都是直接在已经写了一些代码的文件上进行修改的。学习是一边学一边封装成自己的工具,然后再使用。...

2019-11-02 19:28:29 6503

原创 QT图形显示和处理7

再贴一段代码:注意先把上面的代码屏蔽掉://坐标系实验 QGraphicsScene *scene = new QGraphicsScene; MyGraphicsItem *item = new MyGraphicsItem; scene->addItem(item); //这个偏移是根据父类的偏移,而不是子类的, //如果不加后面的 item->setParentI...

2019-11-02 18:26:55 6605

原创 QT图形显示和处理6

我们先暂且不再深究场景和view的坐标系,先研究一下如何定义一个自己的图形项,首先定义一个Qt类:#ifndef MYGraphicsITEM_H#define MYGraphicsITEM_H#include <QGraphicsItem>class MyGraphicsItem : public QGraphicsItem{public: MyGraphics...

2019-11-02 17:00:33 6347

原创 QT图形显示和处理5

有了之前的一些基础,现在开始讲图形项和场景。前面我花了整整两节来详细讲述了绘图的坐标系,大家一定要好好理解一下。现在我们介绍场景和图元。我换一种讲解思路,讲完图元以后就开始直接讲场景坐标系统。所谓图形项,比如你玩的坦克大战游戏,这个坦克可以随意运动,它整体就是一个图形项,它可以发出子弹,每个子弹也是图形项。我们可以定义一个图形项,然后把它放在场景里,并控制它的运动。我们实现如下代码:(...

2019-11-02 15:20:34 6532

原创 QT图形显示和处理4

QT还可以使用2D画图功能来显示图像,绘制文字,实现绘制路径,也可以显示gif图像,就是所谓的动画效果。这些因为和我们最后要实现的东西关系也不是很大,所以就不详细讲述了。在这里简单再说一下双缓冲机制:双缓冲就是设置两个缓冲区,先在一个上画,画好以后直接传给另一个,然后另一个负责显示。在Opengl中,双缓冲是这样:先把内容画在一个缓冲区上,然后两个缓冲区进行交换,然后再画另一个缓冲区,然后两者...

2019-11-01 19:08:08 6221

myRay_Tracer.zip

RayTracer 的工程项目文件,采用Opengl显示。 内容为本人的博客初始工程。其余内容可以参考本人博客,蒙特卡洛光线追踪系列。

2020-05-28

CUDA 专家手册

CUDA 专家手册 , 是一本CUDA学习的必备书籍,内容丰富,适合初学者系统学习CUDA

2019-03-29

cuda计算,opengl显示交互的程序

cuda计算,opengl显示交互的程序,使用GPU作为计算单元,opengl显示和交互。 生成一个波纹,可以用鼠标移动。

2019-03-24

图解TCP_IP第五版中文版

这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。

2018-11-24

学习opencv书和源码,以及怎么搭建开发环境

学习opoencv的书和书里面的源代码,而且还有vs2015,2013等的开发环境搭建方法,十分适合自学。

2018-11-21

怎么搭建opengl开发环境的讲解文档

全部摘自优秀的博客,这里面会教你快速一步步搭建出opengl开发平台,都是值得珍藏的优秀博客,但是自己搜索可能找不到需要的。同时也可以下载我上传的另一个资料,是opengl在vs2015上的所有开发包,省去自己从官网上下载的麻烦,自己从官网上下载也可能会出错。

2018-11-21

Opengl在VS2015的所有常用开发包

opengl的各种开发工具包,包含glut,freeglut,glew,glfw,glad,等,都是编译好的库,不用自己cmake编译,测试都可用,官网下载整理,适用于VS2015,方便快速搭建平台!

2018-11-21

Opengl中文版第三版

计算机图形学Opengl第三版。是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。

2018-11-21

thinking in C++ 英文版第二版

英文版文字版,非图片扫描模式,所以清晰度很高。中文名《C++编程思想》。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。

2018-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除