摘要:正交矩阵是实数特殊化的酉矩阵,因此总是正规矩阵。尽管我们在这里只考虑实数矩阵,这个定义可用于其元素来自任何域的矩阵。正交矩阵毕竟是从内积自然引出的,对于复数的矩阵这导致了归一要求。定义 定义 1 如果:AA'=E(E为单位矩阵,A'表示“矩阵A的转置矩阵”。)或A′A=E,则n阶实矩阵 A称为正交矩阵, 若A为正交阵,则满足以下条件: 1) A 是正交矩阵 2) AA′=E(E为单位矩阵)(#add它的转置矩阵是它的逆矩阵,这是很重要的) 3) A′是正交矩阵 4) A的各行是单位向量且两两正交 5) A的各列是单位向量且两两正交 6) (Ax,Ay)=(x,y) x,y∈R
阅读全文
摘要:消息映射宏的种类:为了简化程序员的工作,MFC定义了一系列的消息映射宏和像AfxSig_vv这样的枚举变量,以及标准消息处理函数,并且具体地实现这些函数。这里主要讨论消息映射宏,常用的分为以下几类。1. 用于Windows消息的宏,前缀为“ON_WM_”。这样的宏不带参数,因为它对应的消息和消息处理函数的函数原型是确定的。MFC提供了这类消息处理函数的定义和缺省实现。每个这样的宏处理不同的Windows消息。例如:宏ON_WM_CREATE()把消息WM_CREATE映射到OnCreate函数,消息映射条目的第一个成员nMessage指定为要处理的Windows消息的ID,第二个成员nCode
阅读全文
摘要:struct tagItem
{
int a;
int b;
}
//假如在A类中定义成员:
vector<tagItem> m_vecItem;
vector<tagItem> A::f()
{
return m_vecItem;//tagItem需要定义拷贝构造函数,否则m_vecItem即使在别处push_back了,每一个元素的a,b成员不会拷贝过去而保持初值(0之类的值)
} vector<tagItem>& A::f()
{
return m_vecItem;
}
因为stl容器都是基于拷贝,故不仅是vector,其它容器返回引用或对象都
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2011/11/jquery-mobile-1近日,JQuery Mobile 1.0发布了,用户可以在其网站上下载。该框架构建在JQuery与JQuery UI之上,支持所有主流的移动、平板、电子阅读器、甚至是桌面平台。借助于诸如PhoneGap之类的工具,用户甚至可以将JQuery Mobile代码转换为混合或是原生应用,这样就可以在所有流行的应用商店上发布了。JQuery Mobile的主要特性列举如下:针对触摸优化的布局与UI Widget,能够自动适应不同设备Themabl
阅读全文
摘要:KM算法求最小权二分匹配,模板题,构图很简单,直接把人当作左边的点,房子当作右边的点,两者之间的曼哈顿距离当作权值即可。第一次搞带权二分匹配的题,就是用KM算法求最小权的时候要加个处,由于KM求的是最大权,所以在套模板之前把权值都取下相反值最后再把KM算法求出来的最大权值取反即可。Kuhn-Munkras算法流程: (1)初始化可行顶标的值 (2)用匈牙利算法寻找完备匹配 (3)若未找到完备匹配则修改可行顶标的值 (4)重复(2)(3)直到找到相等子图的完备匹配为止引用:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i...
阅读全文
摘要:我翻译这篇教程的目的是为了帮助那些对图形渲染技术有兴趣却又苦于找不到免费中文学习资料的人。在我的身边没有任何一位从事计算机专业的前辈,从刚学会 WINDOWS的基本操作到现在,我的计算机技术完全都是一步步自学过来的,算算学编程的历史也近5年时间了。我往往要花一半以上的学习时间用来查学习资料(记得我学GIF图像压缩解压算法时,用了近2个星期时间才编出了显示GIF图片的程序,主要原因就是资料不够,只看一两篇短篇幅的教程来写程序,其中多数时间花在调试代码和猜格式上)。所以我对那些不是从事计算机专业,身边又没有计算机高手的学习者深有同感——查一堆堆资料是自学中最痛苦的过程。这几天我也正在学BUMP M
阅读全文
摘要:FSAA 是 full scene anti-alias 的缩写,有些人将其译为全景反锯齿,还算是合理。不过,倒底 FSAA 是什么呢?为什么要「全景」(full scene)?「半景」不行吗?(其实相对于 FSAA 的是 edge AA,「边缘反锯齿」)反锯齿(anti-alias)又是怎么回事呢?文档内容:[Part 1]要弄清楚什么是 FSAA,就得先从 AA(anti-alias)开始。要弄清楚 AA,只好说明一下取样(sampling)这个麻烦的东西了。对于电脑绘图有些瞭解的读者,应该已经知道,目前的电脑绘图使用的是 2D raster 的显示方式。也就是说,画面是由一大堆有不同颜色
阅读全文
摘要:D3D中公告板的使用示例点击下载源码和素材公告板(billboard)是一种允许在2D对象出现在3D中的很酷的技术。举例来说,一个复杂的对象,诸如一棵树,在一个建模程序中,可以从侧视图(side view)进行渲染,然后在一个矩阵的多边形上进行绘制。这个矩形的多边形通常朝向观察点,因此不论从多边形的哪个角度进行观察,树纹理都好像是从渲染一侧被观察到。如下所示,不管从哪个位置或角度观察多边形,公告板技术保证了多边形始终朝向观察点。公告板的原理就是通过使用世界矩阵,根据观察点来排列多边形。因为观察的角度已知(或能够获得一个观察变换矩阵),就只需要使用相反的观察角来构造矩阵。 不必改变多边形的位置,
阅读全文
摘要:(译者语录: 原文里面使用CreateOffscreenPlainSurface生成一个离屏的页面, 然后用loadSurface载入我们需要的2D图片, 然后再将其贴到离屏页面上去的. 但是这种方法有一个缺点, 就是不支持关键色的选取, 还有就是不支持alpha通道. 所以我不打算在这里介绍原书里面的方法去渲染2D图片, 而是改用D3DXSprite来完成我们的工作.)使用DirectX9来渲染2D图片并不是一件困难的事情. 本章中我们将会学习一下如果载入一副图片并在不同的位置, 用不同的透明度, 以不同的大小在屏幕上面显示这副图片.本章包含的主题有:我们为什么需要在Direct3D里面渲染
阅读全文
摘要:就像修房子一样,别管你用多贵的砖头,它只是一块砖头而已,并不是你想要的房子。砖头可以在开发的时候随时换,但是结构一旦定下来,就不好修改了。那么一个基本,却又efficient的结构究竟是什么样的呢?很简单。所有你所需要的就是引擎,有限状态机和内存池。这三个东西一点都不复杂,你可以从头开始写:首先是你的引擎类,需要些什么呢?class CEngine{public: CEngine(); ~CEngine(); int Initialize(); int Start(); int Restart(); int Pause(); int Shutdown(); int AddModule(CMod
阅读全文
摘要:摘 要对现有游戏引擎开发技术进行改进,提出了一种有效的2D游戏引擎设计与实现方法,该方法以引擎架构为基础,以累积渲染技术作为主要渲染加速手段;结合精灵与动画技术进行具体实现,达到游戏引擎设计的目的。最后通过该方法实现了一个2D游戏引擎,并用实验验证了该方法的有效性。 1、引言 2D游戏开发是游戏开发领域中一个不可或缺的重要分支,绝大多数休闲游戏与动漫游戏都是使用2D游戏技术开发实现的。2D游戏技术已经成为了手机及一系列小型设备游戏开发的主导技术。游戏引擎是游戏开发的最基础部分,为此我们提出了一种有效的2D游戏引擎的设计与实现方法。通过该方法,我们设计并实现了一款2D游戏引擎。 2、2D游...
阅读全文
摘要:Background背景I have been reading alot of questions lately related to DirectX 8 and the exclusion of DirectDraw from the new API. Many people have fallen back to DX7. I can understand people using DX7 if they have alot of experience with that API, but many of the questions seem to be coming from peopl
阅读全文
摘要:安装了VS2010后,用它打开以前的VS2005项目或VS2008项目,都会被强制转换为VS2010的项目,给没有装VS2010的电脑带来不能打开高版本项目的麻烦。用记事本打开解决方案文件(.sln):开头的两行VS2010Microsoft Visual Studio Solution File, Format Version11.00# Visual Studio 2010//开发工具Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") =…………VS2008/SharpDevelopMicrosoft Visual Stu
阅读全文
摘要:一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill, JR。 由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来: 对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v= v1a+ v2b +v3c (1)而对于一个点p,则
阅读全文
摘要:前言(Preface)前段时间有些朋友在论坛里问到一些关于3D数学的知识,就想为大家写点这方面的文章。由于之前比较忙,又遇到过春节,所以最近才着笔写了这篇文章,希望大家喜欢。这些内容主要是一些理论知识,看上去难免有些枯燥,之后的文章我会加入一些实例进行讲解的。如果内容存在错误和不全,就请你来更正和添加了。三维坐标系(3D Coordinate System)三维坐标是把二维的平面坐标推广到三维空间中,在三维坐标中,点(x,y,z)的齐次坐标为(nx,ny,nz,n),其中n为任意不为0的数,规范化的齐次坐标为(x,y,z,1),与之相对应,三维变换的变换矩阵为4×4矩阵。在三维空间中
阅读全文
摘要:一:custom draw自行绘制 ClistCtrl 的列表项,可以利用列表框的 NM_CUSTOMDRAW 消息,该消息由控件向它的父窗口发送,告诉父窗口它的绘图操作。 如果绘图操作不需要父窗口参与,可以使用该控件的 ON_NOTIFY_REFLECT 宏处理它的 NM_CUSTOMDRAW 消息。 它的处理函数的参数中包含 NMHDR,在 CUSTOMDRAW 的通知下 NMHDR 可以被转换成为 NMLVCUSTOMDRAW 结构,该结构包含了列表控件中需要自绘区域的全部信息:typedef struct tagNMLVCUSTOMDRAW{ NMCUSTOMDRAW nmcd; //
阅读全文
摘要:MFC框架各部分指针获取方式:记住,是获取指针MFC消息流程图:string CString char* 的互相转换: string 转 CString CString.Format("%s", string.c_str()); //用c_str()比data()好 char 转 CString CString.Format("%s", char*); // 可以直接给CString赋值,不要用Format char* 转 string string s(char *); CString 转 string string s(CString.GetBuff
阅读全文
摘要:子类化 如果你曾经在Windows环境下编过程序,有时候就会发现:有一个现成的窗口,几乎有你所需要的全部功能,但还不完全一样。如果你需要一个具有过滤特殊字符功能的Edit控件。当然最直接的方法就是自己用代码来实现,但这的确是一个费时又很困难的任务,而子类化就可以用来做这种事情。 子类化允许你接管被子类化的窗口,使你对它有绝对的控制权。举个例子了来阐明一下:例如你需要一个只接受十六进制数字输入的文本编辑框,如果使用一个简单的Edit控件,当用户输入十六进制以外的字符时,你既不知道也无计可施。也就是说,当用户进文本框中输入字符串"zb+q*"时,如果除了拒绝接受整个字符串以外几
阅读全文
摘要:1。先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle );其中 LVS_EX_CHECKBOXES 表示添加CheckBox LVS_EX_FULLROWSELECT 表示选择整行 LVS_EX_GRIDLINES 表示添加表格线CListCtrl固定标题列宽:CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)m_ListCtrl.GetHeaderCtrl(); pHeaderCtrl->EnableWindow(...
阅读全文
摘要:程序员编程艺术第一~二十二章集锦与总结(教你如何编程)作者:July、编程艺术室。出处:http://blog.csdn.net/v_JULY_v。题记 好久没更新博客了,虽只有一个月,但对我来说,已是长久。最重要的是11月初来北京后,在这近一个月找工作的过程中,面试、拜访、购书、读书,亦许久没有敲代码了,手异常生疏,虽只有一个月,但对我来说,仍已是长久。为了表示我一直在关注着本博客,从未曾离开,也为了可以更多的思考,更为了让手不致生疏,更新吧。 ok,针对微软100题一题一题解答的,程序员编程艺术已经写到第二十二章了(艺术这个高帽子早已有意摘取之,然都戴了这么久了,还是戴着好了),其中有些.
阅读全文
摘要:#include <windows.h>
#include <string> /// @brief ascii和unicode之间的编码转换 size_t ascii_to_unicode(const char* src, wchar_t* dest, size_t dest_len, size_t src_len = 0)
{ if(src_len == 0) src_len = strlen(src); return MultiByteToWideChar(CP_ACP, 0, src, static_cast<int>(src_len), ...
阅读全文
摘要:友情提醒:所谓的框架是指SDK目录下/Samples/C++/Common路径下的DXUT系列函数包装。学习框架的前提是必须有足够的Windows API,GUI编程经验,必须熟悉Windows的消息机制,回调机制,最好有万行左右的C/C++编程经验。MFC在这里没有任何用处。另外我觉得最好在看程序之前对于D3D的所有概念有点了解,什么是vertex,texture,matrix,lighting,mesh等等,以及相关的数学概念。这些都可以在网上找到中文翻译,帮助你快速入门。 DXSDK2006和2003版的比起来更新了不少东西,比如DirectX10,还有ManagedDirectX等等.
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2011/11/wicket_1_5近日,开源、面向组件的Java Web应用框架Apache Wicket 1.5发布了。主要的变化有:支持4个新的HTML 5组件(EmailTextField、NumberTextField、UrlTextField与RangeTextField),他们分别对应于HTML5中所定义的客户端功能。改进了消息/事件模型,比如说组件现在可以通过EventSink与EventSource机制交换消息/事件。这些接口已经被标准的Wicket类实现:Comp
阅读全文
摘要:不知道昨晚比赛时脑子里面是咋了,应该是被门夹了,我自己都怀疑自己是怎么了;为什么一个简单的题目都想不出来思路;哎,感觉是自己被吓到了;在看第一题是我还没有看完题目,就有人说是因式分解;结果大家都在朝这个方向思考,就一直纠结到这个地方了,接下来自然而然是很悲剧的;都在思考第一题,剩下的两题都没有人看;我读了第一题,感觉没什么因式分解思路的,就果断放下这个,开始看第二题,一看果断很简单,立马给他们说了题目,然后说出了想法,戒指大家齐声说这么水的题目,直接判断是不是素数就行啦,然后我又给他们说了一组比较特殊的数据;结果皆大欢喜,我用这个查了一个,wmn也查了一个,Mr.zhao也弄了一个;结果是比赛
阅读全文
摘要:首先分析一下这次比赛的没能做出题目的原因:第一,平时在这个平台上面练习次数少;对系统要求的格式不熟悉,平时我们练习算法主要是在各个学校的OJ上面的训练的,OJ系统和Topcoder的平台的要求有很大的区别;平时主要还是习惯于C语言的代码编写风格;对于面向对象的编写有些生疏了,导致比赛时第一道很简单的搜索题,知道怎么做之后用面向对象的方法却不知道该怎么编写代码了;第二,平时训练过程是不够专注,对熟悉的算法不能够迅速正确写出;第三,在平时学习过程中接触的东西太少,接触到的类型有限,做题数量太少,导致有些题目没有思路;第四,心理素质不够好,在遇到自己会做的题时,不能很快的写出代码时,心里开始紧张烦躁
阅读全文