2011年6月23日
摘要: 回车和换行对于程序中的回车和换行,一直都没有真正去弄清楚过,这次查了下资料把它理清下1.由来在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。2.现状后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科 阅读全文
posted @ 2011-06-23 06:36 柯大侠 阅读(550) 评论(0) 推荐(0) 编辑
  2011年6月18日
摘要: 一.Map1.前言 在程序中,经常会遇见关联的数据对出现,可以把这个数据对中的一个称作索引值,另外一个称作关联值或映射值,假如索引值是整数的时候,可以采用数组或者向量存储这些数据对,但是假如索引值是其他的任意数据类型的时候,就需要用到map了2.使用map#include <map>map <string, string> addresses;<1>添加元素map中的第一个元素用于存放索引值,第二个元素用于存放映射值,为了对某一个索引值添加对应的映射元素,可以使用下标操作符,如对于上面定义的通信录addresses,要添加元素,可以如下: addresses 阅读全文
posted @ 2011-06-18 07:29 柯大侠 阅读(3467) 评论(0) 推荐(0) 编辑
  2011年6月16日
摘要: MFC中的窗口绘图问题1.闪屏如果按照常规的绘图过程,即每做完一个绘图操作,就马上进行窗口刷新,当绘图过程比较密集的时候,由于没绘制一次就刷新一次窗口,而刷新窗口是需要一定延时的,这就导致了在上一次的刷新还没有完成的时候,这一次的绘图又到来了,这就是常见的闪屏现象(screen flicker)2.双缓冲 要避免闪屏的问题,只需要对每次绘图都进行窗口刷新,而是对所有的绘图完成之后再进行一次刷新,这既提高了效率,有避免了闪屏的问题。 绘图的实质是将绘制的图形数据写入到一个内存块,然后计算机将这个内存块送到图像显示设备进行显示。默认的绘图过程也是如此,只不过它是每将一次的绘图数据写入到内存,就直接 阅读全文
posted @ 2011-06-16 08:37 柯大侠 阅读(1496) 评论(0) 推荐(0) 编辑
  2011年6月14日
摘要: 函数指针的定义方式T (*Func)(…) ;这样定义了一个返回类型为T的函数指针变量Func,可以用同类型的函数给Func赋值,然后调用Func就可以实现具体函数的调用,如:void MyFun(int x); //这个声明也可写成:void MyFun( int );void (*FunP)(int ); //也可声明成void(*FunP)(int x),但习惯上一般不这样。int main(int argc, char* argv[]){ FunP=&MyFun; (*FunP)(20); return 0;} 上面的main函数的内容也可以写成这样:int main(int 阅读全文
posted @ 2011-06-14 07:42 柯大侠 阅读(205) 评论(0) 推荐(0) 编辑
  2011年5月19日
摘要: 转自:http://www.cppblog.com/richardhe/articles/55722.html1: 设计初衷它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。它设计初衷是大幅度支持扩展的。支持多种场景类型,独立出平台和3D接口限制。2: 基本类结构关系Roo:对象为一切的入口,它负责创建Ogre的所有基础元素,三大基础元素大致包括:场景管理器,绘制系统,资源管理器。场景管理器:场景节点,动态对象。资源管理器:资源组管理,资源管理渲染模块:硬件缓冲区管理,渲染系统,渲染窗口3:关键词Root::Ogre系统入口,程序一开始就应当创建,最后释放,它帮助我们获得其他元素的指针 阅读全文
posted @ 2011-05-19 09:31 柯大侠 阅读(1014) 评论(0) 推荐(0) 编辑
  2011年5月9日
摘要: 最近越来越觉得封装一个模块之前,得写个文档来整理下思路,可以达到事半功倍的效果 使用Kinect来获取关节点位置计算关节的旋转角,用于做mesh deformation-------------------------Kinect模块要完成的事:1. 生成用于显示的图像信息,使用opencv进行<1> 显示深度图 需要传入深度图元数据DepthMetaData的对象,可以传入其指针<2> 显示骨骼 需要获得骨骼的二维坐标,openni里的做法是使用UserGenerator里的骨骼功能获取指定的关节对象,使用枚举变量来指定具体的关节 然后使用DepthGenerator 阅读全文
posted @ 2011-05-09 09:28 柯大侠 阅读(1086) 评论(0) 推荐(0) 编辑
  2011年4月8日
摘要: #include "stdafx.h"#include <XnCppWrapper.h>#include "cv.h"#include "highgui.h"#define SAMPLE_XML_PATH "F:/KFQ/downloads/openni_src/openni/Data/SamplesConfig.xml"#define MAX_DEPTH 10000#define CHECK_RC(nRetVal, what) / if (nRetVal != XN_STATUS_OK) / { / 阅读全文
posted @ 2011-04-08 03:31 柯大侠 阅读(1529) 评论(0) 推荐(0) 编辑
  2011年4月7日
摘要: 原文请参考openni user guide,翻译有错的地方请指出,以下仅是个人理解,请慎重采纳一.总揽抽象层顶层:使用基于openni接口的应用层中间层:代表openni,提供同时和传感器以及中间件模块交互的通信接口底层:捕获视频和音频信息的硬件设备二.基本概念1.模块 Openni框架是个抽象层,用以同时为物理设备和中间层组件提供接口,它的API能够使许多组件在openni框架中被注册,这些组件被称作模块,用于产生和处理传感器数据。选择需要的硬件设备组件或者中间件组件是非常容易和宽松的。传感器模块:l 3D传感器l RGB摄像头l 红外摄像头l 声音设备中间件模块:l 全身分析中间件:一个 阅读全文
posted @ 2011-04-07 07:43 柯大侠 阅读(5171) 评论(0) 推荐(0) 编辑
  2011年4月1日
摘要: from http://hi.baidu.com/fcqian/blog/item/cc5794ec76807a3f27979131.html投影变换是一种很关键的图形变换,OpenGL中只提供了两种投影方式,一种是正射投影,另一种是透视投影。不管是调用哪种投影函数,为了避免不必要的变换,其前面必须加上以下两句:glMAtrixMode(GL_PROJECTION);glLoadIdentity();事实上,投影变换的目的就是定义一个视景体,使得视景体外多余的部分裁剪掉,最终图像只是视景体内的有关部分。本节将详细讲述投影变换的概念以及用法。1 正射投影(Orthographic Project 阅读全文
posted @ 2011-04-01 03:17 柯大侠 阅读(18525) 评论(1) 推荐(1) 编辑
  2011年1月7日
摘要: 现在时间不够,先把问题存放到这,待到有时间再来探究解决这些问题 问题一: 在MFC中,我从CWND派生了一个类,实例化这个类之后,在WindowProc和OnKeyDown里面都无法监听到方向键的动作,最后在PreTranslate函数里面截获了这个操作,不知道这个问题的原因是什么,先暂存这里。 问题二: matlab的绘图窗口的问题,这个问题是很久以前的了,一直... 阅读全文
posted @ 2011-01-07 03:10 柯大侠 阅读(134) 评论(0) 推荐(0) 编辑